本项目是为完成kaggle竞赛题(Dogs vs. Cats Redux: Kernels Edition)而作,题目地址:https://www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition

In [1]:
import os
import cv2
from PIL import Image
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import torch
import torch.nn as nn
from torchvision import transforms, models
import matplotlib.pyplot as plt
%matplotlib inline

一、数据预处理

1、读取/train下的文件,并根据文件名判断标签。

In [2]:
data_dir='./dataset/' #数据目录
train_dir=os.path.join(data_dir,'train') #训练集文件夹
image_names=os.listdir(train_dir) #训练集文件名

#把dog和cat分装到两个列表dogs和cats,并附加标签
dogs,cats=[],[]
for fn in image_names:
    dogs.append((os.path.join(train_dir,fn),1)) if 'dog' in fn else cats.append((os.path.join(train_dir,fn),0))

2、可视化训练集数据分布

In [3]:
cats_size=pd.DataFrame([cv2.imread(cat[0],0).shape for cat in cats],columns=['h','w'])
dogs_size=pd.DataFrame([cv2.imread(dog[0],0).shape for dog in dogs],columns=['h','w'])
In [4]:
plt.figure(figsize=(16,12))
plt.scatter(cats_size['w'],cats_size['h'],c='red')
plt.scatter(dogs_size['w'],dogs_size['h'],c='blue',alpha=0.4)
Out[4]:
<matplotlib.collections.PathCollection at 0x7ff93a8e4c88>

2.1、从散点图可以直观看出,在右上角,猫狗各有一个异常点,下面我们看看尺寸异常的图片是哪两张。

In [5]:
big_cats=cats_size[cats_size['w']>800]
big_dogs=dogs_size[dogs_size['w']>800]
print(f'big_cats:\n{big_cats}\n\nbig_dogs:\n{big_dogs}')
big_cats:
        h     w
9678  768  1023

big_dogs:
        h     w
2959  702  1050

2.2、将尺寸异常的图片可视化。可以看出这两张其实都是正常猫狗图片,图片压缩后对模型训练没有影响。

In [6]:
big_cat=cats[int(big_cats.index.values)][0]
big_dog=dogs[int(big_dogs.index.values)][0]

plt.figure(figsize=(15,12))
plt.subplot(121)
plt.imshow(plt.imread(big_cat))
plt.xlabel(big_cat)
plt.subplot(122)
plt.imshow(plt.imread(big_dog))
plt.xlabel(big_dog)
Out[6]:
Text(0.5,0,'./dataset/train/dog.2317.jpg')

3、分割训练集和验证集。为保证数据平衡,训练集取数量相等的猫和狗,即猫狗各占50%。

In [3]:
#取80%的样本作为训练集
sample_size=0.8
#分割训练集和验证集
train_dogs,valid_dogs=train_test_split(dogs,train_size=sample_size,random_state=42,shuffle=True)
train_cats,valid_cats=train_test_split(cats,train_size=sample_size,random_state=42,shuffle=True)
train_sets=train_dogs+train_cats
valid_sets=valid_dogs+valid_cats
train_size=len(train_sets)
valid_size=len(valid_sets)

print('train_sets: %d, including:%d dogs and %d cats.\nvalid_sets: %d, including:%d dogs and %d cats.'
      %(train_size,len(train_dogs),len(train_cats),valid_size,len(valid_dogs),len(valid_cats)))
train_sets: 20000, including:10000 dogs and 10000 cats.
valid_sets: 5000, including:2500 dogs and 2500 cats.
/opt/conda/lib/python3.6/site-packages/sklearn/model_selection/_split.py:2026: FutureWarning: From version 0.21, test_size will always complement train_size unless both are specified.
  FutureWarning)

4、创建transform。训练集transforms使用随机裁剪、翻转来增强数据,测试集则直接使用中心裁剪。

In [4]:
transform={
'train':transforms.Compose([transforms.Resize(256),
                            transforms.RandomCrop(224),
                            transforms.RandomHorizontalFlip(),
                            transforms.ToTensor(),
                            transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225))]),
'test':transforms.Compose([transforms.Resize(224),
                           transforms.CenterCrop(224),
                           transforms.ToTensor(),
                           transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225))])}

5、定义batch变换函数batch_transform。读取一个batch的文件路径,输出(batch,channel,height,width)

In [5]:
#read the image, return the input of model
def batch_transform(paths,transform):
    return torch.cat(tuple(transform(Image.open(path)).unsqueeze(0) for path in paths))

6、展示transform后的图片。

In [13]:
#展示转换图像的函数
def trans_images_show(datasets,transform):
    trans4plot=[torch.sigmoid(transform(Image.open(path))).permute(1,2,0) for path,_ in datasets]
    size=len(trans4plot)
    fig,ax=plt.subplots(int(size/2),2,figsize=(15,size*2))
    for i in range(size):
        row,col=(i,0) if i<size/2 else (int(i-size/2),1)
        ax[row,col].imshow(trans4plot[i])
        
#展示转换后的图片
trans_images_show(train_dogs[:5]+train_cats[:5],transform['train'])

二、搭建网络

1、以densenet161为基准模型,冻结除classifier以外所有层的参数,修改classifier为最简单的全连接结构nn.Linear(in_features,2),输出维度2的向量,对应两个分类类别。

In [6]:
#冻结除classifier以外的所有参数
model=models.densenet161(pretrained=True)
for param in model.parameters():
    param.requires_grad=False
in_features=model.classifier.in_features
model.classifier=nn.Linear(in_features,2)

#将model移至GPU加快训练速度
device=torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model=model.to(device)
/opt/conda/lib/python3.6/site-packages/torchvision-0.2.1-py3.6.egg/torchvision/models/densenet.py:212: UserWarning: nn.init.kaiming_normal is now deprecated in favor of nn.init.kaiming_normal_.

2、损失函数

In [7]:
criterion=nn.CrossEntropyLoss().cuda() if torch.cuda.is_available() else nn.CrossEntropyLoss()

3、优化器

由于要进行两次训练,在训练模型之前再分别定义。

三、训练网络

1、准备训练参数

In [8]:
epochs=2
every=4
epoch_dict={'loss':{'train':[],'valid':[]},'acc':{'train':[],'valid':[]}}
running={'loss':{'train':[],'valid':[]},'acc':{'train':[],'valid':[]}}

2、用Adam优化器训练classifier。

In [9]:
optimizer=torch.optim.Adam(model.classifier.parameters())

3、DataLoader

In [10]:
train_batch=50
train_loader=torch.utils.data.DataLoader(train_sets,batch_size=train_batch,shuffle=True,num_workers=4)

4、用修改后的densenet161学习训练集

In [11]:
for epoch in range(1,epochs+1):
    count=0
    running_loss=0
    running_acc=0
    
    #train
    model.train()
    for paths,labels in train_loader:
        inputs=batch_transform(paths,transform['train'])
        inputs=inputs.to(device)
        optimizer.zero_grad()
        outputs=model(inputs)
        labels=labels.to(device)
        loss=criterion(outputs,labels)
        loss.backward()
        optimizer.step()
        running_loss+=loss.item()
        train_acc=accuracy_score(torch.argmax(outputs,dim=1),labels)
        running_acc+=train_acc

        count+=1
        print('epoch:%d, training:%d/%d, loss:%.6f, accuracy:%.4f\r'%(epoch,train_batch*count,train_size,loss,train_acc),end='')
        if count%every==0:
            average_loss=running_loss/every #every个batch的平均loss
            average_acc=running_acc/every #every个batch的平均accuracy
            print('epoch:%d, training:%d/%d, average_loss:%.6f, accuracy:%.4f\r'
                  %(epoch,train_batch*count,train_size,average_loss,average_acc))
            running['loss']['train'].append(average_loss)
            running['acc']['train'].append(average_acc)
            running_loss=0
            running_acc=0
            
    e_count=int(count/every)
    e_train_loss=sum(running['loss']['train'][-e_count:])/e_count
    e_train_acc=sum(running['acc']['train'][-e_count:])/e_count
    print('\nepoch %d, average training loss:%.6f ; training accuracy:%.4f'%(epoch,e_train_loss,e_train_acc))
    epoch_dict['loss']['train'].append(e_train_loss)
    epoch_dict['acc']['train'].append(e_train_acc)
    torch.save(model.state_dict(),'./Net-try-%s.pkl'%epoch)
    torch.save(running,'./running-try-%s.pkl'%epoch)
    torch.save(epoch_dict,'./epoch_dict-try-%s.pkl'%epoch)
epoch:1, training:200/20000, average_loss:0.660103, accuracy:0.5900
epoch:1, training:400/20000, average_loss:0.460932, accuracy:0.8800
epoch:1, training:600/20000, average_loss:0.317160, accuracy:0.9650
epoch:1, training:800/20000, average_loss:0.256312, accuracy:0.9650
epoch:1, training:1000/20000, average_loss:0.183150, accuracy:0.9750
epoch:1, training:1200/20000, average_loss:0.191542, accuracy:0.9650
epoch:1, training:1400/20000, average_loss:0.151279, accuracy:0.9600
epoch:1, training:1600/20000, average_loss:0.137197, accuracy:0.9650
epoch:1, training:1800/20000, average_loss:0.103299, accuracy:0.9800
epoch:1, training:2000/20000, average_loss:0.122549, accuracy:0.9650
epoch:1, training:2200/20000, average_loss:0.077602, accuracy:0.9900
epoch:1, training:2400/20000, average_loss:0.103022, accuracy:0.9600
epoch:1, training:2600/20000, average_loss:0.088465, accuracy:0.9800
epoch:1, training:2800/20000, average_loss:0.098651, accuracy:0.9800
epoch:1, training:3000/20000, average_loss:0.098328, accuracy:0.9550
epoch:1, training:3200/20000, average_loss:0.054793, accuracy:0.9950
epoch:1, training:3400/20000, average_loss:0.067161, accuracy:0.9850
epoch:1, training:3600/20000, average_loss:0.067281, accuracy:0.9850
epoch:1, training:3800/20000, average_loss:0.059984, accuracy:0.9900
epoch:1, training:4000/20000, average_loss:0.057609, accuracy:0.9950
epoch:1, training:4200/20000, average_loss:0.078916, accuracy:0.9850
epoch:1, training:4400/20000, average_loss:0.082534, accuracy:0.9850
epoch:1, training:4600/20000, average_loss:0.041814, accuracy:0.9900
epoch:1, training:4800/20000, average_loss:0.075875, accuracy:0.9800
epoch:1, training:5000/20000, average_loss:0.066873, accuracy:0.9750
epoch:1, training:5200/20000, average_loss:0.079847, accuracy:0.9800
epoch:1, training:5400/20000, average_loss:0.073541, accuracy:0.9750
epoch:1, training:5600/20000, average_loss:0.052381, accuracy:0.9850
epoch:1, training:5800/20000, average_loss:0.062445, accuracy:0.9900
epoch:1, training:6000/20000, average_loss:0.048559, accuracy:0.9800
epoch:1, training:6200/20000, average_loss:0.072462, accuracy:0.9850
epoch:1, training:6400/20000, average_loss:0.052203, accuracy:0.9850
epoch:1, training:6600/20000, average_loss:0.062927, accuracy:0.9850
epoch:1, training:6800/20000, average_loss:0.046382, accuracy:0.9800
epoch:1, training:7000/20000, average_loss:0.072440, accuracy:0.9800
epoch:1, training:7200/20000, average_loss:0.094104, accuracy:0.9600
epoch:1, training:7400/20000, average_loss:0.047231, accuracy:0.9800
epoch:1, training:7600/20000, average_loss:0.065210, accuracy:0.9800
epoch:1, training:7800/20000, average_loss:0.128593, accuracy:0.9550
epoch:1, training:8000/20000, average_loss:0.080260, accuracy:0.9750
epoch:1, training:8200/20000, average_loss:0.065911, accuracy:0.9850
epoch:1, training:8400/20000, average_loss:0.042564, accuracy:0.9900
epoch:1, training:8600/20000, average_loss:0.095283, accuracy:0.9550
epoch:1, training:8800/20000, average_loss:0.042840, accuracy:0.9900
epoch:1, training:9000/20000, average_loss:0.061721, accuracy:0.9800
epoch:1, training:9200/20000, average_loss:0.032899, accuracy:0.9900
epoch:1, training:9400/20000, average_loss:0.066112, accuracy:0.9750
epoch:1, training:9600/20000, average_loss:0.048010, accuracy:0.9850
epoch:1, training:9800/20000, average_loss:0.040467, accuracy:0.9950
epoch:1, training:10000/20000, average_loss:0.053333, accuracy:0.9800
epoch:1, training:10200/20000, average_loss:0.082377, accuracy:0.9650
epoch:1, training:10400/20000, average_loss:0.035141, accuracy:0.9950
epoch:1, training:10600/20000, average_loss:0.052619, accuracy:0.9700
epoch:1, training:10800/20000, average_loss:0.049246, accuracy:0.9850
epoch:1, training:11000/20000, average_loss:0.029498, accuracy:1.0000
epoch:1, training:11200/20000, average_loss:0.055234, accuracy:0.9750
epoch:1, training:11400/20000, average_loss:0.079626, accuracy:0.9650
epoch:1, training:11600/20000, average_loss:0.044115, accuracy:0.9850
epoch:1, training:11800/20000, average_loss:0.065144, accuracy:0.9850
epoch:1, training:12000/20000, average_loss:0.031616, accuracy:0.9900
epoch:1, training:12200/20000, average_loss:0.060359, accuracy:0.9800
epoch:1, training:12400/20000, average_loss:0.032904, accuracy:0.9900
epoch:1, training:12600/20000, average_loss:0.094904, accuracy:0.9550
epoch:1, training:12800/20000, average_loss:0.048494, accuracy:0.9900
epoch:1, training:13000/20000, average_loss:0.077351, accuracy:0.9850
epoch:1, training:13200/20000, average_loss:0.071233, accuracy:0.9900
epoch:1, training:13400/20000, average_loss:0.047657, accuracy:0.9850
epoch:1, training:13600/20000, average_loss:0.031657, accuracy:0.9850
epoch:1, training:13800/20000, average_loss:0.069167, accuracy:0.9650
epoch:1, training:14000/20000, average_loss:0.043254, accuracy:0.9900
epoch:1, training:14200/20000, average_loss:0.032475, accuracy:0.9900
epoch:1, training:14400/20000, average_loss:0.037822, accuracy:0.9850
epoch:1, training:14600/20000, average_loss:0.036092, accuracy:0.9900
epoch:1, training:14800/20000, average_loss:0.043201, accuracy:0.9850
epoch:1, training:15000/20000, average_loss:0.017953, accuracy:1.0000
epoch:1, training:15200/20000, average_loss:0.062987, accuracy:0.9750
epoch:1, training:15400/20000, average_loss:0.052012, accuracy:0.9800
epoch:1, training:15600/20000, average_loss:0.029713, accuracy:0.9950
epoch:1, training:15800/20000, average_loss:0.042016, accuracy:0.9850
epoch:1, training:16000/20000, average_loss:0.026992, accuracy:0.9950
epoch:1, training:16200/20000, average_loss:0.025712, accuracy:0.9900
epoch:1, training:16400/20000, average_loss:0.030886, accuracy:0.9900
epoch:1, training:16600/20000, average_loss:0.058917, accuracy:0.9700
epoch:1, training:16800/20000, average_loss:0.037417, accuracy:0.9850
epoch:1, training:17000/20000, average_loss:0.040676, accuracy:0.9900
epoch:1, training:17200/20000, average_loss:0.063677, accuracy:0.9650
epoch:1, training:17400/20000, average_loss:0.033010, accuracy:0.9900
epoch:1, training:17600/20000, average_loss:0.032203, accuracy:0.9900
epoch:1, training:17800/20000, average_loss:0.079573, accuracy:0.9800
epoch:1, training:18000/20000, average_loss:0.029612, accuracy:0.9900
epoch:1, training:18200/20000, average_loss:0.057499, accuracy:0.9750
epoch:1, training:18400/20000, average_loss:0.036375, accuracy:0.9850
epoch:1, training:18600/20000, average_loss:0.015512, accuracy:0.9950
epoch:1, training:18800/20000, average_loss:0.057710, accuracy:0.9900
epoch:1, training:19000/20000, average_loss:0.051012, accuracy:0.9850
epoch:1, training:19200/20000, average_loss:0.047429, accuracy:0.9850
epoch:1, training:19400/20000, average_loss:0.055763, accuracy:0.9750
epoch:1, training:19600/20000, average_loss:0.036020, accuracy:0.9850
epoch:1, training:19800/20000, average_loss:0.087082, accuracy:0.9600
epoch:1, training:20000/20000, average_loss:0.018748, accuracy:1.0000

epoch 1, average training loss:0.076678 ; training accuracy:0.9762
epoch:2, training:200/20000, average_loss:0.036904, accuracy:0.9900
epoch:2, training:400/20000, average_loss:0.064021, accuracy:0.9700
epoch:2, training:600/20000, average_loss:0.026173, accuracy:0.9900
epoch:2, training:800/20000, average_loss:0.078721, accuracy:0.9550
epoch:2, training:1000/20000, average_loss:0.091642, accuracy:0.9750
epoch:2, training:1200/20000, average_loss:0.047182, accuracy:0.9850
epoch:2, training:1400/20000, average_loss:0.018028, accuracy:0.9950
epoch:2, training:1600/20000, average_loss:0.031492, accuracy:0.9900
epoch:2, training:1800/20000, average_loss:0.045312, accuracy:0.9900
epoch:2, training:2000/20000, average_loss:0.051535, accuracy:0.9850
epoch:2, training:2200/20000, average_loss:0.040448, accuracy:0.9800
epoch:2, training:2400/20000, average_loss:0.042091, accuracy:0.9900
epoch:2, training:2600/20000, average_loss:0.033586, accuracy:0.9900
epoch:2, training:2800/20000, average_loss:0.023305, accuracy:1.0000
epoch:2, training:3000/20000, average_loss:0.037637, accuracy:0.9850
epoch:2, training:3200/20000, average_loss:0.020656, accuracy:0.9950
epoch:2, training:3400/20000, average_loss:0.044746, accuracy:0.9900
epoch:2, training:3600/20000, average_loss:0.055749, accuracy:0.9800
epoch:2, training:3800/20000, average_loss:0.029036, accuracy:0.9950
epoch:2, training:4000/20000, average_loss:0.020080, accuracy:0.9950
epoch:2, training:4200/20000, average_loss:0.037575, accuracy:0.9850
epoch:2, training:4400/20000, average_loss:0.031021, accuracy:0.9900
epoch:2, training:4600/20000, average_loss:0.054335, accuracy:0.9800
epoch:2, training:4800/20000, average_loss:0.047614, accuracy:0.9800
epoch:2, training:5000/20000, average_loss:0.068305, accuracy:0.9650
epoch:2, training:5200/20000, average_loss:0.028262, accuracy:0.9850
epoch:2, training:5400/20000, average_loss:0.021051, accuracy:0.9950
epoch:2, training:5600/20000, average_loss:0.063669, accuracy:0.9750
epoch:2, training:5800/20000, average_loss:0.082960, accuracy:0.9750
epoch:2, training:6000/20000, average_loss:0.035946, accuracy:0.9850
epoch:2, training:6200/20000, average_loss:0.022478, accuracy:0.9900
epoch:2, training:6400/20000, average_loss:0.036894, accuracy:0.9850
epoch:2, training:6600/20000, average_loss:0.015766, accuracy:0.9950
epoch:2, training:6800/20000, average_loss:0.036054, accuracy:0.9900
epoch:2, training:7000/20000, average_loss:0.019199, accuracy:0.9950
epoch:2, training:7200/20000, average_loss:0.045617, accuracy:0.9850
epoch:2, training:7400/20000, average_loss:0.022234, accuracy:0.9950
epoch:2, training:7600/20000, average_loss:0.026906, accuracy:0.9900
epoch:2, training:7800/20000, average_loss:0.035229, accuracy:0.9850
epoch:2, training:8000/20000, average_loss:0.050087, accuracy:0.9850
epoch:2, training:8200/20000, average_loss:0.048357, accuracy:0.9750
epoch:2, training:8400/20000, average_loss:0.051472, accuracy:0.9850
epoch:2, training:8600/20000, average_loss:0.042819, accuracy:0.9750
epoch:2, training:8800/20000, average_loss:0.063945, accuracy:0.9800
epoch:2, training:9000/20000, average_loss:0.031060, accuracy:0.9900
epoch:2, training:9200/20000, average_loss:0.051584, accuracy:0.9850
epoch:2, training:9400/20000, average_loss:0.031051, accuracy:0.9900
epoch:2, training:9600/20000, average_loss:0.057933, accuracy:0.9900
epoch:2, training:9800/20000, average_loss:0.031996, accuracy:0.9800
epoch:2, training:10000/20000, average_loss:0.027198, accuracy:0.9800
epoch:2, training:10200/20000, average_loss:0.035269, accuracy:0.9800
epoch:2, training:10400/20000, average_loss:0.096245, accuracy:0.9750
epoch:2, training:10600/20000, average_loss:0.049636, accuracy:0.9750
epoch:2, training:10800/20000, average_loss:0.056049, accuracy:0.9750
epoch:2, training:11000/20000, average_loss:0.024299, accuracy:0.9950
epoch:2, training:11200/20000, average_loss:0.042553, accuracy:0.9800
epoch:2, training:11400/20000, average_loss:0.031732, accuracy:0.9900
epoch:2, training:11600/20000, average_loss:0.031000, accuracy:0.9850
epoch:2, training:11800/20000, average_loss:0.029941, accuracy:0.9900
epoch:2, training:12000/20000, average_loss:0.015197, accuracy:0.9950
epoch:2, training:12200/20000, average_loss:0.021269, accuracy:0.9950
epoch:2, training:12400/20000, average_loss:0.030506, accuracy:0.9900
epoch:2, training:12600/20000, average_loss:0.044552, accuracy:0.9850
epoch:2, training:12800/20000, average_loss:0.067463, accuracy:0.9650
epoch:2, training:13000/20000, average_loss:0.013677, accuracy:0.9950
epoch:2, training:13200/20000, average_loss:0.070172, accuracy:0.9700
epoch:2, training:13400/20000, average_loss:0.036549, accuracy:0.9900
epoch:2, training:13600/20000, average_loss:0.039807, accuracy:0.9800
epoch:2, training:13800/20000, average_loss:0.031531, accuracy:0.9900
epoch:2, training:14000/20000, average_loss:0.071630, accuracy:0.9800
epoch:2, training:14200/20000, average_loss:0.085272, accuracy:0.9800
epoch:2, training:14400/20000, average_loss:0.089751, accuracy:0.9600
epoch:2, training:14600/20000, average_loss:0.142878, accuracy:0.9600
epoch:2, training:14800/20000, average_loss:0.031776, accuracy:0.9850
epoch:2, training:15000/20000, average_loss:0.035625, accuracy:0.9850
epoch:2, training:15200/20000, average_loss:0.125356, accuracy:0.9500
epoch:2, training:15400/20000, average_loss:0.084740, accuracy:0.9750
epoch:2, training:15600/20000, average_loss:0.041703, accuracy:0.9900
epoch:2, training:15800/20000, average_loss:0.095557, accuracy:0.9600
epoch:2, training:16000/20000, average_loss:0.118641, accuracy:0.9500
epoch:2, training:16200/20000, average_loss:0.228135, accuracy:0.9350
epoch:2, training:16400/20000, average_loss:0.081332, accuracy:0.9750
epoch:2, training:16600/20000, average_loss:0.045834, accuracy:0.9700
epoch:2, training:16800/20000, average_loss:0.069746, accuracy:0.9750
epoch:2, training:17000/20000, average_loss:0.123711, accuracy:0.9400
epoch:2, training:17200/20000, average_loss:0.028391, accuracy:0.9900
epoch:2, training:17400/20000, average_loss:0.063183, accuracy:0.9700
epoch:2, training:17600/20000, average_loss:0.016682, accuracy:1.0000
epoch:2, training:17800/20000, average_loss:0.040526, accuracy:0.9800
epoch:2, training:18000/20000, average_loss:0.068054, accuracy:0.9750
epoch:2, training:18200/20000, average_loss:0.069192, accuracy:0.9800
epoch:2, training:18400/20000, average_loss:0.050204, accuracy:0.9800
epoch:2, training:18600/20000, average_loss:0.068714, accuracy:0.9650
epoch:2, training:18800/20000, average_loss:0.054033, accuracy:0.9850
epoch:2, training:19000/20000, average_loss:0.048370, accuracy:0.9900
epoch:2, training:19200/20000, average_loss:0.031406, accuracy:0.9900
epoch:2, training:19400/20000, average_loss:0.037739, accuracy:0.9900
epoch:2, training:19600/20000, average_loss:0.043729, accuracy:0.9900
epoch:2, training:19800/20000, average_loss:0.020713, accuracy:0.9950
epoch:2, training:20000/20000, average_loss:0.035580, accuracy:0.9800

epoch 2, average training loss:0.049726 ; training accuracy:0.9819

5、可视化训练过程评价指标

In [12]:
fig,ax=plt.subplots(4,1,figsize=(15,18))

ax[0].plot(running['loss']['train'])
ax[0].set_title('running loss')

ax[1].plot(running['acc']['train'])
ax[1].set_title('running accuracy')

ax[2].plot(epoch_dict['loss']['train'])
ax[2].set_title('epoch loss')

ax[3].plot(epoch_dict['acc']['train'])
ax[3].set_title('epoch accuracy')
Out[12]:
Text(0.5,1,'epoch accuracy')

6、用训练过的模型预测一次训练集样本,筛出loss大于阈值的样本。
因为训练集绝大部分都是正常图片,异常的只占很小一部分,经过两轮epoch训练,模型准确率已达98%,学到的特征偏向于占绝对优势的正常图片,而此时loss仍然大于1.2040(预测正确的概率不超过30%)的,属于比较难学的样本,其中不乏一些异常图片,标签错误、非猫非狗、像素模糊、颜色深暗、背景复杂、角度刁钻,或者一张图同时存在猫和狗。
这种方法不能作为筛选异常值的标准方法,但是可以辅助人工初步筛选一次异常值。

In [20]:
#normal_sets存放正常样本,outliers存放异常样本
normal_sets,outliers=[],[]

#重新定义train_loader,预测不需要shuffle。
train_loader=torch.utils.data.DataLoader(train_sets,batch_size=train_batch,num_workers=4)

model.eval()
for paths,labels in train_loader:
    inputs=batch_transform(paths,transform['test'])
    inputs=inputs.to(device)
    outputs=model(inputs)
    labels=labels.to(device)
    
    #将每个样本的output和label单独输入损失函数计算loss,并根据loss判断样本应该放入哪个list。
    outputs_tup=outputs.split(1,0)
    labels_tup=labels.split(1,0)
    
    for i in range(len(outputs_tup)):
        loss=criterion(outputs_tup[i],labels_tup[i])
        if loss.item()<1.2040:
            normal_sets.append((paths[i],labels[i].item()))
            print('normal loss: %.6f\r'%loss,end='')
        else:
            outliers.append((paths[i],labels[i].item(),loss.item()))
            print('outlier loss: %.6f'%loss)

#分别保存两个list
torch.save(normal_sets,'<1.2040_normal_sets.pkl')

#按loss从大到小排序
sorted_outliers=sorted(outliers,key=lambda x:x[2],reverse=True)
torch.save(sorted_outliers,'<1.2040_sorted_outliers.pkl')

print('%d images are normal, %d images may be outliers.'%(len(normal_sets),len(sorted_outliers)))
outlier loss: 1.509454
outlier loss: 1.697497
outlier loss: 1.983706
outlier loss: 2.704451
outlier loss: 2.425821
outlier loss: 2.629531
outlier loss: 3.563438
outlier loss: 1.383733
outlier loss: 1.788389
outlier loss: 2.149135
outlier loss: 1.744220
outlier loss: 3.196871
outlier loss: 1.561805
outlier loss: 3.063390
outlier loss: 1.441730
outlier loss: 1.475557
outlier loss: 1.471409
outlier loss: 1.512517
outlier loss: 1.406478
outlier loss: 1.338648
outlier loss: 1.230374
outlier loss: 1.347018
outlier loss: 4.540703
outlier loss: 2.345157
outlier loss: 2.435589
outlier loss: 1.207839
outlier loss: 1.314494
outlier loss: 1.503138
outlier loss: 3.541270
outlier loss: 1.773587
outlier loss: 2.448598
outlier loss: 1.461868
outlier loss: 1.478319
outlier loss: 2.786649
outlier loss: 1.677012
outlier loss: 2.630270
outlier loss: 2.988633
outlier loss: 2.700676
outlier loss: 1.362325
outlier loss: 1.821468
outlier loss: 6.278396
outlier loss: 3.052784
outlier loss: 1.226005
outlier loss: 1.902612
outlier loss: 1.297865
outlier loss: 1.270157
outlier loss: 1.741630
outlier loss: 4.951444
outlier loss: 1.896881
outlier loss: 1.831164
outlier loss: 1.862763
outlier loss: 1.442938
outlier loss: 2.913762
outlier loss: 1.888875
outlier loss: 1.222589
outlier loss: 2.134141
outlier loss: 1.469862
outlier loss: 2.429842
outlier loss: 3.292486
outlier loss: 1.601804
outlier loss: 1.503214
outlier loss: 1.478249
outlier loss: 4.175538
outlier loss: 8.076202
outlier loss: 1.429449
outlier loss: 2.904066
outlier loss: 1.280390
outlier loss: 4.523000
outlier loss: 1.543019
outlier loss: 2.562932
outlier loss: 1.920414
outlier loss: 1.910479
outlier loss: 2.058294
outlier loss: 10.633287
outlier loss: 2.829714
outlier loss: 3.519717
outlier loss: 1.570074
outlier loss: 1.318340
outlier loss: 1.536164
outlier loss: 1.227112
outlier loss: 2.321222
outlier loss: 2.164975
outlier loss: 1.320786
outlier loss: 1.946377
outlier loss: 2.430803
outlier loss: 3.946080
outlier loss: 2.868622
outlier loss: 1.345105
outlier loss: 4.904220
outlier loss: 2.111264
outlier loss: 2.737073
outlier loss: 4.877093
outlier loss: 2.391665
outlier loss: 2.246708
outlier loss: 2.417583
outlier loss: 1.885784
outlier loss: 7.897702
outlier loss: 1.218519
outlier loss: 2.319743
outlier loss: 1.965914
outlier loss: 2.495169
outlier loss: 1.938013
outlier loss: 2.164700
outlier loss: 1.220941
outlier loss: 6.919665
outlier loss: 1.548362
outlier loss: 1.238120
outlier loss: 1.210440
outlier loss: 2.153736
outlier loss: 4.533160
outlier loss: 1.456105
outlier loss: 4.357890
outlier loss: 3.406421
outlier loss: 1.290365
outlier loss: 1.237509
19885 images are normal, 115 images may be outliers.
In [8]:
# normal_sets=torch.load('<1.2040_normal_sets.pkl')
# sorted_outliers=torch.load('<1.2040_sorted_outliers.pkl')

7、展示loss大于阈值的图片

In [11]:
from math import ceil

len_outliers=len(sorted_outliers)
fig,axes=plt.subplots(ceil(len_outliers/5),5,figsize=(20,ceil(len_outliers/5)*6))
for i in range(len_outliers):
    ax=axes[i//5,i%5]
    img_path=sorted_outliers[i][0]
    ax.imshow(Image.open(img_path))
    ax.set_title(f'{os.path.basename(img_path)},  index:{i}')
    ax.set_xlabel(f'loss:{sorted_outliers[i][2]},label:{sorted_outliers[i][1]}')

8、人工对这些筛选出来的图片再检查一遍

①修改标签错误的样本。比如第一张,实际为dog被标记为cat,并移回正常训练集。
②黑猫黑狗相对难以辨认,但如果图片是清晰且正常的,应该移回正常训练集。
③如果连人工都难以辨认的应该予以剔除。

人工检查结果:
标记错误:index=[0]
难学但正常:indices=[26,30,46,48,53,57,58,64,65,77,86,88,89,94,98,100,107,108,110,112]
其余的异常图片丢弃

In [9]:
#修改错误的标签
normal_sets.append((sorted_outliers[0][0],1))
#移回正常的图片
indices=[26,30,46,48,53,57,58,64,65,77,86,88,89,94,98,100,107,108,110,112]
for i in indices:
    normal_sets.append((sorted_outliers[i][0],sorted_outliers[i][1]))
    
train_size=len(normal_sets)
print(f'人工筛选后训练集还有{train_size}个样本。')

9、再次修改model.classifier,使用更复杂的全连接神经网络,并打开model后面几层的参数训练。

In [9]:
#重新修改model的classifier
model.classifier=nn.Sequential(nn.Dropout(0.2),
                               nn.Linear(in_features,int(in_features/2)),
                               nn.ReLU(),
                               nn.Dropout(0.2),
                               nn.Linear(int(in_features/2),int(in_features/4)),
                               nn.ReLU(),
                               nn.Dropout(0.2),
                               nn.Linear(int(in_features/4),int(in_features/8)),
                               nn.ReLU(),
                               nn.Dropout(0.2),
                               nn.Linear(int(in_features/8),2))
model=model.to(device)

#打开model后面几层的参数训练((144+2+8)个)
for i,param in enumerate(model.parameters()):
    if i>335:
        param.requires_grad=True

10、正式训练使用随机梯度下降算法SGD作为optimizer,训练denseblock4、norm5、classifier几层的参数。

In [12]:
init_lr=0.01  #起步learning rate

optimizer=torch.optim.SGD([{'params':model.classifier.parameters()},
                           {'params':model.features.norm5.parameters(),'lr':init_lr*0.1},
                           {'params':model.features.denseblock4.parameters(),'lr':init_lr*0.1}],
                          lr=init_lr,momentum=0.91)

#根据每个epoch的validation loss判断是否衰减learning rate
scheduler=torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer,'min',patience=2)

11、用清洗过的数据集创建新的train_loader

In [13]:
train_batch,valid_batch=64,64
train_loader=torch.utils.data.DataLoader(normal_sets,batch_size=train_batch,shuffle=True,num_workers=4,drop_last=True)
valid_loader=torch.utils.data.DataLoader(valid_sets,batch_size=valid_batch,shuffle=True,num_workers=4,drop_last=True)

12、准备第二次训练(正式训练)

In [14]:
epochs=8
every=4 #每every次,暂停训练,进行一次验证
epoch_dict={'loss':{'train':[],'valid':[]},'acc':{'train':[],'valid':[]}}
running={'loss':{'train':[],'valid':[]},'acc':{'train':[],'valid':[]}}
In [15]:
#用清洗过的训练集训练模型
for epoch in range(1,epochs+1):
    count=0
    running_loss=0
    running_acc=0
    valid_iter=iter(valid_loader)
    
    #train
    model.train()
    for paths,labels in train_loader:
        inputs=batch_transform(paths,transform['train'])
        inputs=inputs.to(device)
        optimizer.zero_grad()
        outputs=model(inputs)
        labels=labels.to(device)
        loss=criterion(outputs,labels)
        loss.backward()
        optimizer.step()
        running_loss+=loss.item()
        train_acc=accuracy_score(torch.argmax(outputs,dim=1),labels)
        running_acc+=train_acc

        count+=1
        print('epoch:%d, training:%d/%d, loss:%.6f, accuracy:%.4f\r'%(epoch,train_batch*count,train_size,loss,train_acc),end='')
        if count%every==0:
            average_loss=running_loss/every #every个batch的平均loss
            average_acc=running_acc/every #every个batch的平均accuracy
            print('epoch:%d, training:%d/%d, average_loss:%.6f, accuracy:%.4f\r'
                  %(epoch,train_batch*count,train_size,average_loss,average_acc))
            running['loss']['train'].append(average_loss)
            running['acc']['train'].append(average_acc)
            running_loss=0
            running_acc=0
            
            #validate
            model.eval()
            paths,labels=next(valid_iter)
            inputs=batch_transform(paths,transform['test'])
            inputs=inputs.to(device)
            outputs=model(inputs)
            labels=labels.to(device)
            loss=criterion(outputs,labels)
            valid_acc=accuracy_score(torch.argmax(outputs,dim=1),labels)
            print('epoch:%d, validation:%d/%d, loss:%.6f, accuracy:%.4f'%(epoch,valid_batch*count/every,valid_size,loss,valid_acc))
            running['loss']['valid'].append(loss.item())
            running['acc']['valid'].append(valid_acc)
            model.train()
    e_count=int(count/every)
    e_train_loss=sum(running['loss']['train'][-e_count:])/e_count
    e_train_acc=sum(running['acc']['train'][-e_count:])/e_count
    e_valid_loss=sum(running['loss']['valid'][-e_count:])/e_count
    e_valid_acc=sum(running['acc']['valid'][-e_count:])/e_count
    print('\nepoch %d, average training loss:%.6f ; training accuracy:%.4f'%(epoch,e_train_loss,e_train_acc))
    print('\nepoch %d, average validation loss:%.6f ; validation accuracy:%.4f'%(epoch,e_valid_loss,e_valid_acc))
    epoch_dict['loss']['train'].append(e_train_loss)
    epoch_dict['loss']['valid'].append(e_valid_loss)
    epoch_dict['acc']['train'].append(e_train_acc)
    epoch_dict['acc']['valid'].append(e_valid_acc)
    torch.save(model.state_dict(),'./Net-%s.pkl'%epoch)
    torch.save(running,'./running-%s.pkl'%epoch)
    torch.save(epoch_dict,'./epoch_dict-%s.pkl'%epoch)
    scheduler.step(epoch_dict['loss']['valid'][-1])
epoch:1, training:256/19906, average_loss:0.692803, accuracy:0.4961
epoch:1, validation:64/5000, loss:0.692064, accuracy:0.5000
epoch:1, training:512/19906, average_loss:0.690384, accuracy:0.5273
epoch:1, validation:128/5000, loss:0.680917, accuracy:0.8906
epoch:1, training:768/19906, average_loss:0.680764, accuracy:0.7109
epoch:1, validation:192/5000, loss:0.666911, accuracy:0.9531
epoch:1, training:1024/19906, average_loss:0.663898, accuracy:0.7969
epoch:1, validation:256/5000, loss:0.648640, accuracy:0.9688
epoch:1, training:1280/19906, average_loss:0.641169, accuracy:0.9336
epoch:1, validation:320/5000, loss:0.616788, accuracy:0.9844
epoch:1, training:1536/19906, average_loss:0.612156, accuracy:0.9492
epoch:1, validation:384/5000, loss:0.557154, accuracy:0.9688
epoch:1, training:1792/19906, average_loss:0.562330, accuracy:0.9062
epoch:1, validation:448/5000, loss:0.463377, accuracy:0.9844
epoch:1, training:2048/19906, average_loss:0.454710, accuracy:0.9570
epoch:1, validation:512/5000, loss:0.331567, accuracy:0.9688
epoch:1, training:2304/19906, average_loss:0.332527, accuracy:0.9727
epoch:1, validation:576/5000, loss:0.206435, accuracy:0.9844
epoch:1, training:2560/19906, average_loss:0.194451, accuracy:0.9727
epoch:1, validation:640/5000, loss:0.102596, accuracy:0.9844
epoch:1, training:2816/19906, average_loss:0.116892, accuracy:0.9648
epoch:1, validation:704/5000, loss:0.021395, accuracy:1.0000
epoch:1, training:3072/19906, average_loss:0.072266, accuracy:0.9805
epoch:1, validation:768/5000, loss:0.046132, accuracy:0.9688
epoch:1, training:3328/19906, average_loss:0.048800, accuracy:0.9883
epoch:1, validation:832/5000, loss:0.020116, accuracy:0.9844
epoch:1, training:3584/19906, average_loss:0.040073, accuracy:0.9844
epoch:1, validation:896/5000, loss:0.004472, accuracy:1.0000
epoch:1, training:3840/19906, average_loss:0.057982, accuracy:0.9805
epoch:1, validation:960/5000, loss:0.000659, accuracy:1.0000
epoch:1, training:4096/19906, average_loss:0.077948, accuracy:0.9844
epoch:1, validation:1024/5000, loss:0.001392, accuracy:1.0000
epoch:1, training:4352/19906, average_loss:0.078676, accuracy:0.9766
epoch:1, validation:1088/5000, loss:0.087902, accuracy:0.9844
epoch:1, training:4608/19906, average_loss:0.068736, accuracy:0.9805
epoch:1, validation:1152/5000, loss:0.000318, accuracy:1.0000
epoch:1, training:4864/19906, average_loss:0.023642, accuracy:0.9883
epoch:1, validation:1216/5000, loss:0.011413, accuracy:1.0000
epoch:1, training:5120/19906, average_loss:0.097780, accuracy:0.9688
epoch:1, validation:1280/5000, loss:0.072212, accuracy:0.9844
epoch:1, training:5376/19906, average_loss:0.061924, accuracy:0.9766
epoch:1, validation:1344/5000, loss:0.013030, accuracy:1.0000
epoch:1, training:5632/19906, average_loss:0.046654, accuracy:0.9805
epoch:1, validation:1408/5000, loss:0.001989, accuracy:1.0000
epoch:1, training:5888/19906, average_loss:0.055009, accuracy:0.9805
epoch:1, validation:1472/5000, loss:0.003617, accuracy:1.0000
epoch:1, training:6144/19906, average_loss:0.036790, accuracy:0.9844
epoch:1, validation:1536/5000, loss:0.021617, accuracy:0.9844
epoch:1, training:6400/19906, average_loss:0.044026, accuracy:0.9844
epoch:1, validation:1600/5000, loss:0.002276, accuracy:1.0000
epoch:1, training:6656/19906, average_loss:0.011491, accuracy:1.0000
epoch:1, validation:1664/5000, loss:0.012039, accuracy:1.0000
epoch:1, training:6912/19906, average_loss:0.032683, accuracy:0.9844
epoch:1, validation:1728/5000, loss:0.005250, accuracy:1.0000
epoch:1, training:7168/19906, average_loss:0.022979, accuracy:0.9883
epoch:1, validation:1792/5000, loss:0.002678, accuracy:1.0000
epoch:1, training:7424/19906, average_loss:0.048954, accuracy:0.9922
epoch:1, validation:1856/5000, loss:0.078122, accuracy:0.9844
epoch:1, training:7680/19906, average_loss:0.020846, accuracy:0.9883
epoch:1, validation:1920/5000, loss:0.105349, accuracy:0.9688
epoch:1, training:7936/19906, average_loss:0.018833, accuracy:0.9961
epoch:1, validation:1984/5000, loss:0.021426, accuracy:0.9844
epoch:1, training:8192/19906, average_loss:0.028211, accuracy:0.9883
epoch:1, validation:2048/5000, loss:0.000810, accuracy:1.0000
epoch:1, training:8448/19906, average_loss:0.057453, accuracy:0.9883
epoch:1, validation:2112/5000, loss:0.044903, accuracy:0.9844
epoch:1, training:8704/19906, average_loss:0.043043, accuracy:0.9844
epoch:1, validation:2176/5000, loss:0.004546, accuracy:1.0000
epoch:1, training:8960/19906, average_loss:0.067994, accuracy:0.9766
epoch:1, validation:2240/5000, loss:0.002327, accuracy:1.0000
epoch:1, training:9216/19906, average_loss:0.040462, accuracy:0.9844
epoch:1, validation:2304/5000, loss:0.036139, accuracy:0.9844
epoch:1, training:9472/19906, average_loss:0.018382, accuracy:0.9922
epoch:1, validation:2368/5000, loss:0.000696, accuracy:1.0000
epoch:1, training:9728/19906, average_loss:0.030085, accuracy:0.9883
epoch:1, validation:2432/5000, loss:0.072669, accuracy:0.9688
epoch:1, training:9984/19906, average_loss:0.065980, accuracy:0.9727
epoch:1, validation:2496/5000, loss:0.107264, accuracy:0.9844
epoch:1, training:10240/19906, average_loss:0.040373, accuracy:0.9922
epoch:1, validation:2560/5000, loss:0.005048, accuracy:1.0000
epoch:1, training:10496/19906, average_loss:0.041386, accuracy:0.9922
epoch:1, validation:2624/5000, loss:0.055147, accuracy:0.9844
epoch:1, training:10752/19906, average_loss:0.030950, accuracy:0.9844
epoch:1, validation:2688/5000, loss:0.005246, accuracy:1.0000
epoch:1, training:11008/19906, average_loss:0.018262, accuracy:0.9922
epoch:1, validation:2752/5000, loss:0.004007, accuracy:1.0000
epoch:1, training:11264/19906, average_loss:0.034730, accuracy:0.9844
epoch:1, validation:2816/5000, loss:0.068101, accuracy:0.9688
epoch:1, training:11520/19906, average_loss:0.026257, accuracy:0.9922
epoch:1, validation:2880/5000, loss:0.004370, accuracy:1.0000
epoch:1, training:11776/19906, average_loss:0.024941, accuracy:0.9922
epoch:1, validation:2944/5000, loss:0.002993, accuracy:1.0000
epoch:1, training:12032/19906, average_loss:0.040181, accuracy:0.9922
epoch:1, validation:3008/5000, loss:0.001702, accuracy:1.0000
epoch:1, training:12288/19906, average_loss:0.026028, accuracy:0.9922
epoch:1, validation:3072/5000, loss:0.004387, accuracy:1.0000
epoch:1, training:12544/19906, average_loss:0.031847, accuracy:0.9883
epoch:1, validation:3136/5000, loss:0.001279, accuracy:1.0000
epoch:1, training:12800/19906, average_loss:0.009978, accuracy:0.9961
epoch:1, validation:3200/5000, loss:0.009239, accuracy:1.0000
epoch:1, training:13056/19906, average_loss:0.054978, accuracy:0.9766
epoch:1, validation:3264/5000, loss:0.019947, accuracy:0.9844
epoch:1, training:13312/19906, average_loss:0.074884, accuracy:0.9805
epoch:1, validation:3328/5000, loss:0.045995, accuracy:0.9844
epoch:1, training:13568/19906, average_loss:0.099740, accuracy:0.9609
epoch:1, validation:3392/5000, loss:0.004139, accuracy:1.0000
epoch:1, training:13824/19906, average_loss:0.057065, accuracy:0.9805
epoch:1, validation:3456/5000, loss:0.039026, accuracy:0.9844
epoch:1, training:14080/19906, average_loss:0.044356, accuracy:0.9844
epoch:1, validation:3520/5000, loss:0.008343, accuracy:1.0000
epoch:1, training:14336/19906, average_loss:0.046293, accuracy:0.9805
epoch:1, validation:3584/5000, loss:0.018700, accuracy:0.9844
epoch:1, training:14592/19906, average_loss:0.078486, accuracy:0.9648
epoch:1, validation:3648/5000, loss:0.004631, accuracy:1.0000
epoch:1, training:14848/19906, average_loss:0.025718, accuracy:0.9922
epoch:1, validation:3712/5000, loss:0.033576, accuracy:0.9844
epoch:1, training:15104/19906, average_loss:0.034877, accuracy:0.9883
epoch:1, validation:3776/5000, loss:0.001876, accuracy:1.0000
epoch:1, training:15360/19906, average_loss:0.044565, accuracy:0.9766
epoch:1, validation:3840/5000, loss:0.007674, accuracy:1.0000
epoch:1, training:15616/19906, average_loss:0.070000, accuracy:0.9727
epoch:1, validation:3904/5000, loss:0.084662, accuracy:0.9844
epoch:1, training:15872/19906, average_loss:0.036729, accuracy:0.9883
epoch:1, validation:3968/5000, loss:0.017937, accuracy:1.0000
epoch:1, training:16128/19906, average_loss:0.060050, accuracy:0.9805
epoch:1, validation:4032/5000, loss:0.020853, accuracy:1.0000
epoch:1, training:16384/19906, average_loss:0.011596, accuracy:0.9922
epoch:1, validation:4096/5000, loss:0.001814, accuracy:1.0000
epoch:1, training:16640/19906, average_loss:0.022626, accuracy:0.9922
epoch:1, validation:4160/5000, loss:0.104208, accuracy:0.9688
epoch:1, training:16896/19906, average_loss:0.032046, accuracy:0.9922
epoch:1, validation:4224/5000, loss:0.025504, accuracy:0.9844
epoch:1, training:17152/19906, average_loss:0.015455, accuracy:0.9961
epoch:1, validation:4288/5000, loss:0.015886, accuracy:0.9844
epoch:1, training:17408/19906, average_loss:0.004816, accuracy:1.0000
epoch:1, validation:4352/5000, loss:0.020585, accuracy:0.9844
epoch:1, training:17664/19906, average_loss:0.021119, accuracy:0.9922
epoch:1, validation:4416/5000, loss:0.030061, accuracy:0.9844
epoch:1, training:17920/19906, average_loss:0.034845, accuracy:0.9883
epoch:1, validation:4480/5000, loss:0.004874, accuracy:1.0000
epoch:1, training:18176/19906, average_loss:0.050192, accuracy:0.9844
epoch:1, validation:4544/5000, loss:0.065469, accuracy:0.9688
epoch:1, training:18432/19906, average_loss:0.031037, accuracy:0.9844
epoch:1, validation:4608/5000, loss:0.039436, accuracy:0.9844
epoch:1, training:18688/19906, average_loss:0.005861, accuracy:0.9961
epoch:1, validation:4672/5000, loss:0.007999, accuracy:1.0000
epoch:1, training:18944/19906, average_loss:0.045966, accuracy:0.9883
epoch:1, validation:4736/5000, loss:0.000784, accuracy:1.0000
epoch:1, training:19200/19906, average_loss:0.028020, accuracy:0.9922
epoch:1, validation:4800/5000, loss:0.013546, accuracy:0.9844
epoch:1, training:19456/19906, average_loss:0.066694, accuracy:0.9766
epoch:1, validation:4864/5000, loss:0.006183, accuracy:1.0000
epoch:1, training:19712/19906, average_loss:0.038823, accuracy:0.9844
epoch:1, validation:4928/5000, loss:0.002350, accuracy:1.0000
epoch:1, training:19904/19906, loss:0.007188, accuracy:1.0000
epoch 1, average training loss:0.109371 ; training accuracy:0.9641

epoch 1, average validation loss:0.085413 ; validation accuracy:0.9825
epoch:2, training:256/19906, average_loss:0.037823, accuracy:0.9844
epoch:2, validation:64/5000, loss:0.057512, accuracy:0.9844
epoch:2, training:512/19906, average_loss:0.009342, accuracy:0.9961
epoch:2, validation:128/5000, loss:0.021859, accuracy:0.9844
epoch:2, training:768/19906, average_loss:0.006414, accuracy:1.0000
epoch:2, validation:192/5000, loss:0.010888, accuracy:1.0000
epoch:2, training:1024/19906, average_loss:0.015221, accuracy:0.9961
epoch:2, validation:256/5000, loss:0.000837, accuracy:1.0000
epoch:2, training:1280/19906, average_loss:0.032559, accuracy:0.9844
epoch:2, validation:320/5000, loss:0.001507, accuracy:1.0000
epoch:2, training:1536/19906, average_loss:0.016797, accuracy:0.9961
epoch:2, validation:384/5000, loss:0.000295, accuracy:1.0000
epoch:2, training:1792/19906, average_loss:0.023284, accuracy:0.9883
epoch:2, validation:448/5000, loss:0.003814, accuracy:1.0000
epoch:2, training:2048/19906, average_loss:0.036473, accuracy:0.9805
epoch:2, validation:512/5000, loss:0.086899, accuracy:0.9844
epoch:2, training:2304/19906, average_loss:0.015288, accuracy:0.9922
epoch:2, validation:576/5000, loss:0.043621, accuracy:0.9844
epoch:2, training:2560/19906, average_loss:0.016836, accuracy:0.9922
epoch:2, validation:640/5000, loss:0.014246, accuracy:0.9844
epoch:2, training:2816/19906, average_loss:0.052514, accuracy:0.9844
epoch:2, validation:704/5000, loss:0.002632, accuracy:1.0000
epoch:2, training:3072/19906, average_loss:0.007469, accuracy:1.0000
epoch:2, validation:768/5000, loss:0.053790, accuracy:0.9844
epoch:2, training:3328/19906, average_loss:0.021754, accuracy:0.9961
epoch:2, validation:832/5000, loss:0.000779, accuracy:1.0000
epoch:2, training:3584/19906, average_loss:0.028103, accuracy:0.9883
epoch:2, validation:896/5000, loss:0.004831, accuracy:1.0000
epoch:2, training:3840/19906, average_loss:0.049610, accuracy:0.9766
epoch:2, validation:960/5000, loss:0.000779, accuracy:1.0000
epoch:2, training:4096/19906, average_loss:0.025121, accuracy:0.9883
epoch:2, validation:1024/5000, loss:0.087100, accuracy:0.9688
epoch:2, training:4352/19906, average_loss:0.023462, accuracy:0.9883
epoch:2, validation:1088/5000, loss:0.009936, accuracy:1.0000
epoch:2, training:4608/19906, average_loss:0.014287, accuracy:0.9961
epoch:2, validation:1152/5000, loss:0.000956, accuracy:1.0000
epoch:2, training:4864/19906, average_loss:0.016653, accuracy:0.9922
epoch:2, validation:1216/5000, loss:0.133278, accuracy:0.9844
epoch:2, training:5120/19906, average_loss:0.058195, accuracy:0.9805
epoch:2, validation:1280/5000, loss:0.003301, accuracy:1.0000
epoch:2, training:5376/19906, average_loss:0.008096, accuracy:1.0000
epoch:2, validation:1344/5000, loss:0.014836, accuracy:0.9844
epoch:2, training:5632/19906, average_loss:0.016690, accuracy:0.9961
epoch:2, validation:1408/5000, loss:0.008744, accuracy:1.0000
epoch:2, training:5888/19906, average_loss:0.031769, accuracy:0.9883
epoch:2, validation:1472/5000, loss:0.006800, accuracy:1.0000
epoch:2, training:6144/19906, average_loss:0.049741, accuracy:0.9766
epoch:2, validation:1536/5000, loss:0.002030, accuracy:1.0000
epoch:2, training:6400/19906, average_loss:0.048506, accuracy:0.9805
epoch:2, validation:1600/5000, loss:0.003055, accuracy:1.0000
epoch:2, training:6656/19906, average_loss:0.023811, accuracy:0.9883
epoch:2, validation:1664/5000, loss:0.036062, accuracy:0.9844
epoch:2, training:6912/19906, average_loss:0.017177, accuracy:0.9922
epoch:2, validation:1728/5000, loss:0.012052, accuracy:1.0000
epoch:2, training:7168/19906, average_loss:0.016235, accuracy:0.9961
epoch:2, validation:1792/5000, loss:0.049722, accuracy:0.9844
epoch:2, training:7424/19906, average_loss:0.035990, accuracy:0.9766
epoch:2, validation:1856/5000, loss:0.001256, accuracy:1.0000
epoch:2, training:7680/19906, average_loss:0.013676, accuracy:0.9961
epoch:2, validation:1920/5000, loss:0.000498, accuracy:1.0000
epoch:2, training:7936/19906, average_loss:0.024111, accuracy:0.9961
epoch:2, validation:1984/5000, loss:0.152993, accuracy:0.9688
epoch:2, training:8192/19906, average_loss:0.006104, accuracy:1.0000
epoch:2, validation:2048/5000, loss:0.017719, accuracy:0.9844
epoch:2, training:8448/19906, average_loss:0.022918, accuracy:0.9922
epoch:2, validation:2112/5000, loss:0.015391, accuracy:0.9844
epoch:2, training:8704/19906, average_loss:0.006031, accuracy:1.0000
epoch:2, validation:2176/5000, loss:0.007938, accuracy:1.0000
epoch:2, training:8960/19906, average_loss:0.019167, accuracy:0.9961
epoch:2, validation:2240/5000, loss:0.032441, accuracy:0.9844
epoch:2, training:9216/19906, average_loss:0.021482, accuracy:0.9844
epoch:2, validation:2304/5000, loss:0.036510, accuracy:0.9844
epoch:2, training:9472/19906, average_loss:0.026900, accuracy:0.9883
epoch:2, validation:2368/5000, loss:0.005568, accuracy:1.0000
epoch:2, training:9728/19906, average_loss:0.011071, accuracy:0.9922
epoch:2, validation:2432/5000, loss:0.000191, accuracy:1.0000
epoch:2, training:9984/19906, average_loss:0.065220, accuracy:0.9727
epoch:2, validation:2496/5000, loss:0.063646, accuracy:0.9688
epoch:2, training:10240/19906, average_loss:0.064789, accuracy:0.9883
epoch:2, validation:2560/5000, loss:0.001264, accuracy:1.0000
epoch:2, training:10496/19906, average_loss:0.008028, accuracy:1.0000
epoch:2, validation:2624/5000, loss:0.126041, accuracy:0.9688
epoch:2, training:10752/19906, average_loss:0.029956, accuracy:0.9883
epoch:2, validation:2688/5000, loss:0.007201, accuracy:1.0000
epoch:2, training:11008/19906, average_loss:0.018640, accuracy:0.9961
epoch:2, validation:2752/5000, loss:0.000281, accuracy:1.0000
epoch:2, training:11264/19906, average_loss:0.027149, accuracy:0.9883
epoch:2, validation:2816/5000, loss:0.003840, accuracy:1.0000
epoch:2, training:11520/19906, average_loss:0.011585, accuracy:0.9922
epoch:2, validation:2880/5000, loss:0.022251, accuracy:0.9844
epoch:2, training:11776/19906, average_loss:0.015996, accuracy:0.9961
epoch:2, validation:2944/5000, loss:0.001733, accuracy:1.0000
epoch:2, training:12032/19906, average_loss:0.049851, accuracy:0.9844
epoch:2, validation:3008/5000, loss:0.005550, accuracy:1.0000
epoch:2, training:12288/19906, average_loss:0.027625, accuracy:0.9844
epoch:2, validation:3072/5000, loss:0.015485, accuracy:0.9844
epoch:2, training:12544/19906, average_loss:0.036348, accuracy:0.9844
epoch:2, validation:3136/5000, loss:0.000337, accuracy:1.0000
epoch:2, training:12800/19906, average_loss:0.009635, accuracy:0.9961
epoch:2, validation:3200/5000, loss:0.001941, accuracy:1.0000
epoch:2, training:13056/19906, average_loss:0.023242, accuracy:0.9961
epoch:2, validation:3264/5000, loss:0.000522, accuracy:1.0000
epoch:2, training:13312/19906, average_loss:0.019794, accuracy:0.9922
epoch:2, validation:3328/5000, loss:0.016297, accuracy:0.9844
epoch:2, training:13568/19906, average_loss:0.007055, accuracy:0.9961
epoch:2, validation:3392/5000, loss:0.000686, accuracy:1.0000
epoch:2, training:13824/19906, average_loss:0.015649, accuracy:0.9922
epoch:2, validation:3456/5000, loss:0.002686, accuracy:1.0000
epoch:2, training:14080/19906, average_loss:0.034808, accuracy:0.9844
epoch:2, validation:3520/5000, loss:0.007491, accuracy:1.0000
epoch:2, training:14336/19906, average_loss:0.028059, accuracy:0.9922
epoch:2, validation:3584/5000, loss:0.000894, accuracy:1.0000
epoch:2, training:14592/19906, average_loss:0.022293, accuracy:0.9922
epoch:2, validation:3648/5000, loss:0.001594, accuracy:1.0000
epoch:2, training:14848/19906, average_loss:0.015158, accuracy:0.9922
epoch:2, validation:3712/5000, loss:0.004803, accuracy:1.0000
epoch:2, training:15104/19906, average_loss:0.021205, accuracy:0.9922
epoch:2, validation:3776/5000, loss:0.002839, accuracy:1.0000
epoch:2, training:15360/19906, average_loss:0.019743, accuracy:0.9961
epoch:2, validation:3840/5000, loss:0.001962, accuracy:1.0000
epoch:2, training:15616/19906, average_loss:0.016139, accuracy:0.9961
epoch:2, validation:3904/5000, loss:0.002085, accuracy:1.0000
epoch:2, training:15872/19906, average_loss:0.029635, accuracy:0.9883
epoch:2, validation:3968/5000, loss:0.044123, accuracy:0.9844
epoch:2, training:16128/19906, average_loss:0.031137, accuracy:0.9883
epoch:2, validation:4032/5000, loss:0.007249, accuracy:1.0000
epoch:2, training:16384/19906, average_loss:0.016223, accuracy:0.9922
epoch:2, validation:4096/5000, loss:0.064479, accuracy:0.9844
epoch:2, training:16640/19906, average_loss:0.020075, accuracy:0.9922
epoch:2, validation:4160/5000, loss:0.003011, accuracy:1.0000
epoch:2, training:16896/19906, average_loss:0.030538, accuracy:0.9883
epoch:2, validation:4224/5000, loss:0.001284, accuracy:1.0000
epoch:2, training:17152/19906, average_loss:0.017343, accuracy:0.9922
epoch:2, validation:4288/5000, loss:0.001983, accuracy:1.0000
epoch:2, training:17408/19906, average_loss:0.060159, accuracy:0.9805
epoch:2, validation:4352/5000, loss:0.000580, accuracy:1.0000
epoch:2, training:17664/19906, average_loss:0.012163, accuracy:0.9961
epoch:2, validation:4416/5000, loss:0.015328, accuracy:0.9844
epoch:2, training:17920/19906, average_loss:0.006853, accuracy:1.0000
epoch:2, validation:4480/5000, loss:0.004091, accuracy:1.0000
epoch:2, training:18176/19906, average_loss:0.014941, accuracy:0.9961
epoch:2, validation:4544/5000, loss:0.069898, accuracy:0.9688
epoch:2, training:18432/19906, average_loss:0.019375, accuracy:0.9883
epoch:2, validation:4608/5000, loss:0.012069, accuracy:0.9844
epoch:2, training:18688/19906, average_loss:0.056100, accuracy:0.9766
epoch:2, validation:4672/5000, loss:0.000950, accuracy:1.0000
epoch:2, training:18944/19906, average_loss:0.010762, accuracy:0.9961
epoch:2, validation:4736/5000, loss:0.001104, accuracy:1.0000
epoch:2, training:19200/19906, average_loss:0.011634, accuracy:0.9961
epoch:2, validation:4800/5000, loss:0.022084, accuracy:0.9844
epoch:2, training:19456/19906, average_loss:0.034161, accuracy:0.9883
epoch:2, validation:4864/5000, loss:0.004170, accuracy:1.0000
epoch:2, training:19712/19906, average_loss:0.038256, accuracy:0.9805
epoch:2, validation:4928/5000, loss:0.021776, accuracy:0.9844
epoch:2, training:19904/19906, loss:0.010083, accuracy:1.0000
epoch 2, average training loss:0.024727 ; training accuracy:0.9906

epoch 2, average validation loss:0.019588 ; validation accuracy:0.9933
epoch:3, training:256/19906, average_loss:0.032870, accuracy:0.9883
epoch:3, validation:64/5000, loss:0.008985, accuracy:1.0000
epoch:3, training:512/19906, average_loss:0.021664, accuracy:0.9883
epoch:3, validation:128/5000, loss:0.010037, accuracy:1.0000
epoch:3, training:768/19906, average_loss:0.019826, accuracy:0.9922
epoch:3, validation:192/5000, loss:0.001152, accuracy:1.0000
epoch:3, training:1024/19906, average_loss:0.006362, accuracy:0.9961
epoch:3, validation:256/5000, loss:0.061478, accuracy:0.9844
epoch:3, training:1280/19906, average_loss:0.017091, accuracy:0.9922
epoch:3, validation:320/5000, loss:0.026996, accuracy:0.9844
epoch:3, training:1536/19906, average_loss:0.022878, accuracy:0.9922
epoch:3, validation:384/5000, loss:0.018349, accuracy:0.9844
epoch:3, training:1792/19906, average_loss:0.037846, accuracy:0.9844
epoch:3, validation:448/5000, loss:0.002569, accuracy:1.0000
epoch:3, training:2048/19906, average_loss:0.013023, accuracy:0.9961
epoch:3, validation:512/5000, loss:0.000609, accuracy:1.0000
epoch:3, training:2304/19906, average_loss:0.003825, accuracy:1.0000
epoch:3, validation:576/5000, loss:0.000481, accuracy:1.0000
epoch:3, training:2560/19906, average_loss:0.025536, accuracy:0.9883
epoch:3, validation:640/5000, loss:0.017965, accuracy:0.9844
epoch:3, training:2816/19906, average_loss:0.027515, accuracy:0.9844
epoch:3, validation:704/5000, loss:0.000821, accuracy:1.0000
epoch:3, training:3072/19906, average_loss:0.020877, accuracy:0.9922
epoch:3, validation:768/5000, loss:0.003867, accuracy:1.0000
epoch:3, training:3328/19906, average_loss:0.024009, accuracy:0.9883
epoch:3, validation:832/5000, loss:0.068641, accuracy:0.9844
epoch:3, training:3584/19906, average_loss:0.003128, accuracy:1.0000
epoch:3, validation:896/5000, loss:0.011497, accuracy:1.0000
epoch:3, training:3840/19906, average_loss:0.021942, accuracy:0.9961
epoch:3, validation:960/5000, loss:0.082731, accuracy:0.9531
epoch:3, training:4096/19906, average_loss:0.008784, accuracy:1.0000
epoch:3, validation:1024/5000, loss:0.007367, accuracy:1.0000
epoch:3, training:4352/19906, average_loss:0.023089, accuracy:0.9922
epoch:3, validation:1088/5000, loss:0.000733, accuracy:1.0000
epoch:3, training:4608/19906, average_loss:0.011234, accuracy:0.9961
epoch:3, validation:1152/5000, loss:0.001425, accuracy:1.0000
epoch:3, training:4864/19906, average_loss:0.051198, accuracy:0.9727
epoch:3, validation:1216/5000, loss:0.028932, accuracy:0.9844
epoch:3, training:5120/19906, average_loss:0.035275, accuracy:0.9922
epoch:3, validation:1280/5000, loss:0.004662, accuracy:1.0000
epoch:3, training:5376/19906, average_loss:0.015667, accuracy:0.9961
epoch:3, validation:1344/5000, loss:0.001213, accuracy:1.0000
epoch:3, training:5632/19906, average_loss:0.020516, accuracy:0.9922
epoch:3, validation:1408/5000, loss:0.011415, accuracy:0.9844
epoch:3, training:5888/19906, average_loss:0.064809, accuracy:0.9688
epoch:3, validation:1472/5000, loss:0.028182, accuracy:0.9844
epoch:3, training:6144/19906, average_loss:0.024536, accuracy:0.9883
epoch:3, validation:1536/5000, loss:0.002254, accuracy:1.0000
epoch:3, training:6400/19906, average_loss:0.032128, accuracy:0.9766
epoch:3, validation:1600/5000, loss:0.005987, accuracy:1.0000
epoch:3, training:6656/19906, average_loss:0.033675, accuracy:0.9844
epoch:3, validation:1664/5000, loss:0.002180, accuracy:1.0000
epoch:3, training:6912/19906, average_loss:0.011425, accuracy:0.9961
epoch:3, validation:1728/5000, loss:0.006466, accuracy:1.0000
epoch:3, training:7168/19906, average_loss:0.019101, accuracy:0.9844
epoch:3, validation:1792/5000, loss:0.006028, accuracy:1.0000
epoch:3, training:7424/19906, average_loss:0.008441, accuracy:0.9961
epoch:3, validation:1856/5000, loss:0.000573, accuracy:1.0000
epoch:3, training:7680/19906, average_loss:0.039647, accuracy:0.9844
epoch:3, validation:1920/5000, loss:0.002968, accuracy:1.0000
epoch:3, training:7936/19906, average_loss:0.013482, accuracy:0.9922
epoch:3, validation:1984/5000, loss:0.005560, accuracy:1.0000
epoch:3, training:8192/19906, average_loss:0.044374, accuracy:0.9922
epoch:3, validation:2048/5000, loss:0.002702, accuracy:1.0000
epoch:3, training:8448/19906, average_loss:0.022026, accuracy:0.9883
epoch:3, validation:2112/5000, loss:0.035365, accuracy:0.9688
epoch:3, training:8704/19906, average_loss:0.018871, accuracy:0.9922
epoch:3, validation:2176/5000, loss:0.182107, accuracy:0.9688
epoch:3, training:8960/19906, average_loss:0.006667, accuracy:1.0000
epoch:3, validation:2240/5000, loss:0.052365, accuracy:0.9844
epoch:3, training:9216/19906, average_loss:0.023849, accuracy:0.9883
epoch:3, validation:2304/5000, loss:0.005010, accuracy:1.0000
epoch:3, training:9472/19906, average_loss:0.030075, accuracy:0.9844
epoch:3, validation:2368/5000, loss:0.056289, accuracy:0.9844
epoch:3, training:9728/19906, average_loss:0.015500, accuracy:0.9961
epoch:3, validation:2432/5000, loss:0.000496, accuracy:1.0000
epoch:3, training:9984/19906, average_loss:0.042650, accuracy:0.9883
epoch:3, validation:2496/5000, loss:0.003501, accuracy:1.0000
epoch:3, training:10240/19906, average_loss:0.023914, accuracy:0.9922
epoch:3, validation:2560/5000, loss:0.000541, accuracy:1.0000
epoch:3, training:10496/19906, average_loss:0.004209, accuracy:1.0000
epoch:3, validation:2624/5000, loss:0.002269, accuracy:1.0000
epoch:3, training:10752/19906, average_loss:0.013441, accuracy:0.9961
epoch:3, validation:2688/5000, loss:0.059577, accuracy:0.9844
epoch:3, training:11008/19906, average_loss:0.008493, accuracy:0.9961
epoch:3, validation:2752/5000, loss:0.000790, accuracy:1.0000
epoch:3, training:11264/19906, average_loss:0.023324, accuracy:0.9922
epoch:3, validation:2816/5000, loss:0.000661, accuracy:1.0000
epoch:3, training:11520/19906, average_loss:0.017499, accuracy:0.9961
epoch:3, validation:2880/5000, loss:0.000451, accuracy:1.0000
epoch:3, training:11776/19906, average_loss:0.014259, accuracy:0.9961
epoch:3, validation:2944/5000, loss:0.034097, accuracy:0.9844
epoch:3, training:12032/19906, average_loss:0.004114, accuracy:1.0000
epoch:3, validation:3008/5000, loss:0.003238, accuracy:1.0000
epoch:3, training:12288/19906, average_loss:0.013052, accuracy:0.9961
epoch:3, validation:3072/5000, loss:0.000652, accuracy:1.0000
epoch:3, training:12544/19906, average_loss:0.006289, accuracy:0.9961
epoch:3, validation:3136/5000, loss:0.002121, accuracy:1.0000
epoch:3, training:12800/19906, average_loss:0.007764, accuracy:0.9961
epoch:3, validation:3200/5000, loss:0.033604, accuracy:0.9844
epoch:3, training:13056/19906, average_loss:0.010435, accuracy:0.9922
epoch:3, validation:3264/5000, loss:0.040126, accuracy:0.9844
epoch:3, training:13312/19906, average_loss:0.006426, accuracy:0.9961
epoch:3, validation:3328/5000, loss:0.000445, accuracy:1.0000
epoch:3, training:13568/19906, average_loss:0.009646, accuracy:0.9961
epoch:3, validation:3392/5000, loss:0.142125, accuracy:0.9688
epoch:3, training:13824/19906, average_loss:0.036602, accuracy:0.9844
epoch:3, validation:3456/5000, loss:0.000354, accuracy:1.0000
epoch:3, training:14080/19906, average_loss:0.041951, accuracy:0.9883
epoch:3, validation:3520/5000, loss:0.026777, accuracy:0.9844
epoch:3, training:14336/19906, average_loss:0.010705, accuracy:0.9961
epoch:3, validation:3584/5000, loss:0.000090, accuracy:1.0000
epoch:3, training:14592/19906, average_loss:0.006035, accuracy:1.0000
epoch:3, validation:3648/5000, loss:0.034455, accuracy:0.9844
epoch:3, training:14848/19906, average_loss:0.006750, accuracy:1.0000
epoch:3, validation:3712/5000, loss:0.001315, accuracy:1.0000
epoch:3, training:15104/19906, average_loss:0.030761, accuracy:0.9883
epoch:3, validation:3776/5000, loss:0.059099, accuracy:0.9844
epoch:3, training:15360/19906, average_loss:0.027352, accuracy:0.9922
epoch:3, validation:3840/5000, loss:0.000212, accuracy:1.0000
epoch:3, training:15616/19906, average_loss:0.015821, accuracy:0.9961
epoch:3, validation:3904/5000, loss:0.021069, accuracy:0.9844
epoch:3, training:15872/19906, average_loss:0.010942, accuracy:0.9961
epoch:3, validation:3968/5000, loss:0.016222, accuracy:0.9844
epoch:3, training:16128/19906, average_loss:0.023879, accuracy:0.9961
epoch:3, validation:4032/5000, loss:0.000415, accuracy:1.0000
epoch:3, training:16384/19906, average_loss:0.021492, accuracy:0.9883
epoch:3, validation:4096/5000, loss:0.042857, accuracy:0.9844
epoch:3, training:16640/19906, average_loss:0.012960, accuracy:0.9922
epoch:3, validation:4160/5000, loss:0.169506, accuracy:0.9688
epoch:3, training:16896/19906, average_loss:0.048432, accuracy:0.9883
epoch:3, validation:4224/5000, loss:0.001413, accuracy:1.0000
epoch:3, training:17152/19906, average_loss:0.003248, accuracy:1.0000
epoch:3, validation:4288/5000, loss:0.000480, accuracy:1.0000
epoch:3, training:17408/19906, average_loss:0.017040, accuracy:0.9961
epoch:3, validation:4352/5000, loss:0.000436, accuracy:1.0000
epoch:3, training:17664/19906, average_loss:0.007986, accuracy:0.9961
epoch:3, validation:4416/5000, loss:0.005112, accuracy:1.0000
epoch:3, training:17920/19906, average_loss:0.010628, accuracy:0.9961
epoch:3, validation:4480/5000, loss:0.012341, accuracy:1.0000
epoch:3, training:18176/19906, average_loss:0.024289, accuracy:0.9883
epoch:3, validation:4544/5000, loss:0.000930, accuracy:1.0000
epoch:3, training:18432/19906, average_loss:0.006141, accuracy:0.9961
epoch:3, validation:4608/5000, loss:0.029040, accuracy:0.9844
epoch:3, training:18688/19906, average_loss:0.012199, accuracy:0.9922
epoch:3, validation:4672/5000, loss:0.006785, accuracy:1.0000
epoch:3, training:18944/19906, average_loss:0.007613, accuracy:1.0000
epoch:3, validation:4736/5000, loss:0.034779, accuracy:0.9844
epoch:3, training:19200/19906, average_loss:0.004366, accuracy:1.0000
epoch:3, validation:4800/5000, loss:0.008594, accuracy:1.0000
epoch:3, training:19456/19906, average_loss:0.017898, accuracy:0.9883
epoch:3, validation:4864/5000, loss:0.000124, accuracy:1.0000
epoch:3, training:19712/19906, average_loss:0.008475, accuracy:0.9961
epoch:3, validation:4928/5000, loss:0.100634, accuracy:0.9844
epoch:3, training:19904/19906, loss:0.026808, accuracy:0.9844
epoch 3, average training loss:0.019375 ; training accuracy:0.9924

epoch 3, average validation loss:0.021606 ; validation accuracy:0.9931
epoch:4, training:256/19906, average_loss:0.007754, accuracy:0.9961
epoch:4, validation:64/5000, loss:0.040814, accuracy:0.9844
epoch:4, training:512/19906, average_loss:0.002094, accuracy:1.0000
epoch:4, validation:128/5000, loss:0.000330, accuracy:1.0000
epoch:4, training:768/19906, average_loss:0.020638, accuracy:0.9922
epoch:4, validation:192/5000, loss:0.003902, accuracy:1.0000
epoch:4, training:1024/19906, average_loss:0.004443, accuracy:1.0000
epoch:4, validation:256/5000, loss:0.000168, accuracy:1.0000
epoch:4, training:1280/19906, average_loss:0.008058, accuracy:0.9961
epoch:4, validation:320/5000, loss:0.001773, accuracy:1.0000
epoch:4, training:1536/19906, average_loss:0.004872, accuracy:0.9961
epoch:4, validation:384/5000, loss:0.286203, accuracy:0.9688
epoch:4, training:1792/19906, average_loss:0.016861, accuracy:0.9922
epoch:4, validation:448/5000, loss:0.000148, accuracy:1.0000
epoch:4, training:2048/19906, average_loss:0.015353, accuracy:0.9922
epoch:4, validation:512/5000, loss:0.000655, accuracy:1.0000
epoch:4, training:2304/19906, average_loss:0.003345, accuracy:1.0000
epoch:4, validation:576/5000, loss:0.045982, accuracy:0.9688
epoch:4, training:2560/19906, average_loss:0.016633, accuracy:0.9922
epoch:4, validation:640/5000, loss:0.000164, accuracy:1.0000
epoch:4, training:2816/19906, average_loss:0.028707, accuracy:0.9844
epoch:4, validation:704/5000, loss:0.023199, accuracy:0.9844
epoch:4, training:3072/19906, average_loss:0.007815, accuracy:0.9961
epoch:4, validation:768/5000, loss:0.000826, accuracy:1.0000
epoch:4, training:3328/19906, average_loss:0.017479, accuracy:0.9922
epoch:4, validation:832/5000, loss:0.005161, accuracy:1.0000
epoch:4, training:3584/19906, average_loss:0.021639, accuracy:0.9922
epoch:4, validation:896/5000, loss:0.000649, accuracy:1.0000
epoch:4, training:3840/19906, average_loss:0.004078, accuracy:1.0000
epoch:4, validation:960/5000, loss:0.046923, accuracy:0.9844
epoch:4, training:4096/19906, average_loss:0.003967, accuracy:1.0000
epoch:4, validation:1024/5000, loss:0.000328, accuracy:1.0000
epoch:4, training:4352/19906, average_loss:0.004257, accuracy:0.9961
epoch:4, validation:1088/5000, loss:0.000555, accuracy:1.0000
epoch:4, training:4608/19906, average_loss:0.015607, accuracy:0.9922
epoch:4, validation:1152/5000, loss:0.001086, accuracy:1.0000
epoch:4, training:4864/19906, average_loss:0.006367, accuracy:0.9961
epoch:4, validation:1216/5000, loss:0.124464, accuracy:0.9531
epoch:4, training:5120/19906, average_loss:0.034365, accuracy:0.9805
epoch:4, validation:1280/5000, loss:0.000775, accuracy:1.0000
epoch:4, training:5376/19906, average_loss:0.017388, accuracy:0.9922
epoch:4, validation:1344/5000, loss:0.000057, accuracy:1.0000
epoch:4, training:5632/19906, average_loss:0.006219, accuracy:0.9961
epoch:4, validation:1408/5000, loss:0.049622, accuracy:0.9844
epoch:4, training:5888/19906, average_loss:0.014079, accuracy:0.9922
epoch:4, validation:1472/5000, loss:0.000395, accuracy:1.0000
epoch:4, training:6144/19906, average_loss:0.020442, accuracy:0.9922
epoch:4, validation:1536/5000, loss:0.000194, accuracy:1.0000
epoch:4, training:6400/19906, average_loss:0.024268, accuracy:0.9844
epoch:4, validation:1600/5000, loss:0.060044, accuracy:0.9844
epoch:4, training:6656/19906, average_loss:0.018031, accuracy:0.9922
epoch:4, validation:1664/5000, loss:0.000366, accuracy:1.0000
epoch:4, training:6912/19906, average_loss:0.025781, accuracy:0.9844
epoch:4, validation:1728/5000, loss:0.002613, accuracy:1.0000
epoch:4, training:7168/19906, average_loss:0.000972, accuracy:1.0000
epoch:4, validation:1792/5000, loss:0.032814, accuracy:0.9844
epoch:4, training:7424/19906, average_loss:0.009302, accuracy:0.9961
epoch:4, validation:1856/5000, loss:0.019737, accuracy:0.9844
epoch:4, training:7680/19906, average_loss:0.042176, accuracy:0.9883
epoch:4, validation:1920/5000, loss:0.076092, accuracy:0.9688
epoch:4, training:7936/19906, average_loss:0.006285, accuracy:0.9961
epoch:4, validation:1984/5000, loss:0.000519, accuracy:1.0000
epoch:4, training:8192/19906, average_loss:0.029754, accuracy:0.9844
epoch:4, validation:2048/5000, loss:0.000567, accuracy:1.0000
epoch:4, training:8448/19906, average_loss:0.044955, accuracy:0.9805
epoch:4, validation:2112/5000, loss:0.015658, accuracy:0.9844
epoch:4, training:8704/19906, average_loss:0.007362, accuracy:1.0000
epoch:4, validation:2176/5000, loss:0.004161, accuracy:1.0000
epoch:4, training:8960/19906, average_loss:0.008825, accuracy:0.9961
epoch:4, validation:2240/5000, loss:0.000174, accuracy:1.0000
epoch:4, training:9216/19906, average_loss:0.015186, accuracy:0.9961
epoch:4, validation:2304/5000, loss:0.009459, accuracy:1.0000
epoch:4, training:9472/19906, average_loss:0.024168, accuracy:0.9883
epoch:4, validation:2368/5000, loss:0.024611, accuracy:0.9844
epoch:4, training:9728/19906, average_loss:0.014386, accuracy:0.9961
epoch:4, validation:2432/5000, loss:0.020597, accuracy:0.9844
epoch:4, training:9984/19906, average_loss:0.005668, accuracy:1.0000
epoch:4, validation:2496/5000, loss:0.030388, accuracy:0.9844
epoch:4, training:10240/19906, average_loss:0.034799, accuracy:0.9883
epoch:4, validation:2560/5000, loss:0.041881, accuracy:0.9844
epoch:4, training:10496/19906, average_loss:0.023003, accuracy:0.9922
epoch:4, validation:2624/5000, loss:0.001202, accuracy:1.0000
epoch:4, training:10752/19906, average_loss:0.015461, accuracy:0.9922
epoch:4, validation:2688/5000, loss:0.001035, accuracy:1.0000
epoch:4, training:11008/19906, average_loss:0.014692, accuracy:0.9961
epoch:4, validation:2752/5000, loss:0.065113, accuracy:0.9844
epoch:4, training:11264/19906, average_loss:0.008271, accuracy:0.9961
epoch:4, validation:2816/5000, loss:0.001533, accuracy:1.0000
epoch:4, training:11520/19906, average_loss:0.021511, accuracy:0.9883
epoch:4, validation:2880/5000, loss:0.001719, accuracy:1.0000
epoch:4, training:11776/19906, average_loss:0.015681, accuracy:0.9961
epoch:4, validation:2944/5000, loss:0.000456, accuracy:1.0000
epoch:4, training:12032/19906, average_loss:0.009554, accuracy:1.0000
epoch:4, validation:3008/5000, loss:0.000348, accuracy:1.0000
epoch:4, training:12288/19906, average_loss:0.001659, accuracy:1.0000
epoch:4, validation:3072/5000, loss:0.095145, accuracy:0.9844
epoch:4, training:12544/19906, average_loss:0.009920, accuracy:1.0000
epoch:4, validation:3136/5000, loss:0.043864, accuracy:0.9844
epoch:4, training:12800/19906, average_loss:0.016946, accuracy:0.9961
epoch:4, validation:3200/5000, loss:0.005675, accuracy:1.0000
epoch:4, training:13056/19906, average_loss:0.006214, accuracy:0.9961
epoch:4, validation:3264/5000, loss:0.067065, accuracy:0.9688
epoch:4, training:13312/19906, average_loss:0.010247, accuracy:0.9961
epoch:4, validation:3328/5000, loss:0.000766, accuracy:1.0000
epoch:4, training:13568/19906, average_loss:0.004422, accuracy:0.9961
epoch:4, validation:3392/5000, loss:0.029742, accuracy:0.9844
epoch:4, training:13824/19906, average_loss:0.040108, accuracy:0.9883
epoch:4, validation:3456/5000, loss:0.017174, accuracy:0.9844
epoch:4, training:14080/19906, average_loss:0.006944, accuracy:0.9961
epoch:4, validation:3520/5000, loss:0.098046, accuracy:0.9844
epoch:4, training:14336/19906, average_loss:0.071435, accuracy:0.9766
epoch:4, validation:3584/5000, loss:0.000429, accuracy:1.0000
epoch:4, training:14592/19906, average_loss:0.002828, accuracy:1.0000
epoch:4, validation:3648/5000, loss:0.007260, accuracy:1.0000
epoch:4, training:14848/19906, average_loss:0.027152, accuracy:0.9883
epoch:4, validation:3712/5000, loss:0.010883, accuracy:1.0000
epoch:4, training:15104/19906, average_loss:0.013202, accuracy:0.9961
epoch:4, validation:3776/5000, loss:0.002655, accuracy:1.0000
epoch:4, training:15360/19906, average_loss:0.006901, accuracy:0.9961
epoch:4, validation:3840/5000, loss:0.005824, accuracy:1.0000
epoch:4, training:15616/19906, average_loss:0.006991, accuracy:0.9961
epoch:4, validation:3904/5000, loss:0.001470, accuracy:1.0000
epoch:4, training:15872/19906, average_loss:0.014980, accuracy:0.9922
epoch:4, validation:3968/5000, loss:0.002568, accuracy:1.0000
epoch:4, training:16128/19906, average_loss:0.006864, accuracy:1.0000
epoch:4, validation:4032/5000, loss:0.000499, accuracy:1.0000
epoch:4, training:16384/19906, average_loss:0.008948, accuracy:0.9961
epoch:4, validation:4096/5000, loss:0.000094, accuracy:1.0000
epoch:4, training:16640/19906, average_loss:0.034609, accuracy:0.9961
epoch:4, validation:4160/5000, loss:0.017449, accuracy:0.9844
epoch:4, training:16896/19906, average_loss:0.024395, accuracy:0.9883
epoch:4, validation:4224/5000, loss:0.004809, accuracy:1.0000
epoch:4, training:17152/19906, average_loss:0.008076, accuracy:0.9961
epoch:4, validation:4288/5000, loss:0.000190, accuracy:1.0000
epoch:4, training:17408/19906, average_loss:0.027434, accuracy:0.9961
epoch:4, validation:4352/5000, loss:0.000540, accuracy:1.0000
epoch:4, training:17664/19906, average_loss:0.037773, accuracy:0.9883
epoch:4, validation:4416/5000, loss:0.003532, accuracy:1.0000
epoch:4, training:17920/19906, average_loss:0.010929, accuracy:0.9922
epoch:4, validation:4480/5000, loss:0.002187, accuracy:1.0000
epoch:4, training:18176/19906, average_loss:0.011303, accuracy:0.9961
epoch:4, validation:4544/5000, loss:0.000187, accuracy:1.0000
epoch:4, training:18432/19906, average_loss:0.002338, accuracy:1.0000
epoch:4, validation:4608/5000, loss:0.000090, accuracy:1.0000
epoch:4, training:18688/19906, average_loss:0.011657, accuracy:0.9922
epoch:4, validation:4672/5000, loss:0.001779, accuracy:1.0000
epoch:4, training:18944/19906, average_loss:0.010522, accuracy:0.9961
epoch:4, validation:4736/5000, loss:0.001415, accuracy:1.0000
epoch:4, training:19200/19906, average_loss:0.045700, accuracy:0.9844
epoch:4, validation:4800/5000, loss:0.000357, accuracy:1.0000
epoch:4, training:19456/19906, average_loss:0.006079, accuracy:0.9961
epoch:4, validation:4864/5000, loss:0.056835, accuracy:0.9844
epoch:4, training:19712/19906, average_loss:0.007081, accuracy:0.9961
epoch:4, validation:4928/5000, loss:0.002267, accuracy:1.0000
epoch:4, training:19904/19906, loss:0.080698, accuracy:0.9844
epoch 4, average training loss:0.015795 ; training accuracy:0.9938

epoch 4, average validation loss:0.019821 ; validation accuracy:0.9937
epoch:5, training:256/19906, average_loss:0.013674, accuracy:0.9961
epoch:5, validation:64/5000, loss:0.045811, accuracy:0.9844
epoch:5, training:512/19906, average_loss:0.004136, accuracy:1.0000
epoch:5, validation:128/5000, loss:0.011270, accuracy:0.9844
epoch:5, training:768/19906, average_loss:0.008997, accuracy:0.9961
epoch:5, validation:192/5000, loss:0.000700, accuracy:1.0000
epoch:5, training:1024/19906, average_loss:0.029290, accuracy:0.9922
epoch:5, validation:256/5000, loss:0.002409, accuracy:1.0000
epoch:5, training:1280/19906, average_loss:0.005601, accuracy:1.0000
epoch:5, validation:320/5000, loss:0.004033, accuracy:1.0000
epoch:5, training:1536/19906, average_loss:0.011223, accuracy:0.9961
epoch:5, validation:384/5000, loss:0.000353, accuracy:1.0000
epoch:5, training:1792/19906, average_loss:0.002085, accuracy:1.0000
epoch:5, validation:448/5000, loss:0.005157, accuracy:1.0000
epoch:5, training:2048/19906, average_loss:0.004512, accuracy:1.0000
epoch:5, validation:512/5000, loss:0.000045, accuracy:1.0000
epoch:5, training:2304/19906, average_loss:0.001562, accuracy:1.0000
epoch:5, validation:576/5000, loss:0.006352, accuracy:1.0000
epoch:5, training:2560/19906, average_loss:0.004147, accuracy:0.9961
epoch:5, validation:640/5000, loss:0.144121, accuracy:0.9844
epoch:5, training:2816/19906, average_loss:0.018868, accuracy:0.9922
epoch:5, validation:704/5000, loss:0.000484, accuracy:1.0000
epoch:5, training:3072/19906, average_loss:0.013698, accuracy:0.9961
epoch:5, validation:768/5000, loss:0.000085, accuracy:1.0000
epoch:5, training:3328/19906, average_loss:0.009017, accuracy:0.9961
epoch:5, validation:832/5000, loss:0.020203, accuracy:0.9844
epoch:5, training:3584/19906, average_loss:0.019410, accuracy:0.9922
epoch:5, validation:896/5000, loss:0.000184, accuracy:1.0000
epoch:5, training:3840/19906, average_loss:0.001971, accuracy:1.0000
epoch:5, validation:960/5000, loss:0.001558, accuracy:1.0000
epoch:5, training:4096/19906, average_loss:0.008643, accuracy:0.9922
epoch:5, validation:1024/5000, loss:0.001851, accuracy:1.0000
epoch:5, training:4352/19906, average_loss:0.012033, accuracy:0.9961
epoch:5, validation:1088/5000, loss:0.000487, accuracy:1.0000
epoch:5, training:4608/19906, average_loss:0.007173, accuracy:0.9961
epoch:5, validation:1152/5000, loss:0.000147, accuracy:1.0000
epoch:5, training:4864/19906, average_loss:0.004910, accuracy:1.0000
epoch:5, validation:1216/5000, loss:0.001286, accuracy:1.0000
epoch:5, training:5120/19906, average_loss:0.009564, accuracy:0.9961
epoch:5, validation:1280/5000, loss:0.007457, accuracy:1.0000
epoch:5, training:5376/19906, average_loss:0.002418, accuracy:1.0000
epoch:5, validation:1344/5000, loss:0.000230, accuracy:1.0000
epoch:5, training:5632/19906, average_loss:0.021149, accuracy:0.9883
epoch:5, validation:1408/5000, loss:0.000608, accuracy:1.0000
epoch:5, training:5888/19906, average_loss:0.002366, accuracy:1.0000
epoch:5, validation:1472/5000, loss:0.001317, accuracy:1.0000
epoch:5, training:6144/19906, average_loss:0.009629, accuracy:0.9961
epoch:5, validation:1536/5000, loss:0.023578, accuracy:0.9844
epoch:5, training:6400/19906, average_loss:0.050521, accuracy:0.9805
epoch:5, validation:1600/5000, loss:0.052051, accuracy:0.9844
epoch:5, training:6656/19906, average_loss:0.035231, accuracy:0.9805
epoch:5, validation:1664/5000, loss:0.000920, accuracy:1.0000
epoch:5, training:6912/19906, average_loss:0.021586, accuracy:0.9922
epoch:5, validation:1728/5000, loss:0.052670, accuracy:0.9844
epoch:5, training:7168/19906, average_loss:0.027837, accuracy:0.9844
epoch:5, validation:1792/5000, loss:0.057355, accuracy:0.9844
epoch:5, training:7424/19906, average_loss:0.017736, accuracy:0.9844
epoch:5, validation:1856/5000, loss:0.000159, accuracy:1.0000
epoch:5, training:7680/19906, average_loss:0.002667, accuracy:1.0000
epoch:5, validation:1920/5000, loss:0.000344, accuracy:1.0000
epoch:5, training:7936/19906, average_loss:0.009928, accuracy:0.9961
epoch:5, validation:1984/5000, loss:0.001753, accuracy:1.0000
epoch:5, training:8192/19906, average_loss:0.013486, accuracy:0.9961
epoch:5, validation:2048/5000, loss:0.000809, accuracy:1.0000
epoch:5, training:8448/19906, average_loss:0.009695, accuracy:0.9922
epoch:5, validation:2112/5000, loss:0.053921, accuracy:0.9688
epoch:5, training:8704/19906, average_loss:0.012253, accuracy:0.9961
epoch:5, validation:2176/5000, loss:0.009434, accuracy:1.0000
epoch:5, training:8960/19906, average_loss:0.016521, accuracy:0.9922
epoch:5, validation:2240/5000, loss:0.050054, accuracy:0.9844
epoch:5, training:9216/19906, average_loss:0.003836, accuracy:1.0000
epoch:5, validation:2304/5000, loss:0.002503, accuracy:1.0000
epoch:5, training:9472/19906, average_loss:0.004876, accuracy:1.0000
epoch:5, validation:2368/5000, loss:0.022046, accuracy:0.9844
epoch:5, training:9728/19906, average_loss:0.006957, accuracy:1.0000
epoch:5, validation:2432/5000, loss:0.001242, accuracy:1.0000
epoch:5, training:9984/19906, average_loss:0.006488, accuracy:1.0000
epoch:5, validation:2496/5000, loss:0.000453, accuracy:1.0000
epoch:5, training:10240/19906, average_loss:0.004064, accuracy:1.0000
epoch:5, validation:2560/5000, loss:0.080213, accuracy:0.9844
epoch:5, training:10496/19906, average_loss:0.008918, accuracy:0.9961
epoch:5, validation:2624/5000, loss:0.038996, accuracy:0.9844
epoch:5, training:10752/19906, average_loss:0.011945, accuracy:0.9961
epoch:5, validation:2688/5000, loss:0.001069, accuracy:1.0000
epoch:5, training:11008/19906, average_loss:0.012594, accuracy:0.9961
epoch:5, validation:2752/5000, loss:0.001415, accuracy:1.0000
epoch:5, training:11264/19906, average_loss:0.014078, accuracy:0.9922
epoch:5, validation:2816/5000, loss:0.015513, accuracy:1.0000
epoch:5, training:11520/19906, average_loss:0.014534, accuracy:0.9961
epoch:5, validation:2880/5000, loss:0.000686, accuracy:1.0000
epoch:5, training:11776/19906, average_loss:0.009871, accuracy:0.9961
epoch:5, validation:2944/5000, loss:0.003685, accuracy:1.0000
epoch:5, training:12032/19906, average_loss:0.012628, accuracy:0.9922
epoch:5, validation:3008/5000, loss:0.075270, accuracy:0.9688
epoch:5, training:12288/19906, average_loss:0.008374, accuracy:0.9961
epoch:5, validation:3072/5000, loss:0.003426, accuracy:1.0000
epoch:5, training:12544/19906, average_loss:0.009711, accuracy:0.9922
epoch:5, validation:3136/5000, loss:0.007286, accuracy:1.0000
epoch:5, training:12800/19906, average_loss:0.004379, accuracy:1.0000
epoch:5, validation:3200/5000, loss:0.003024, accuracy:1.0000
epoch:5, training:13056/19906, average_loss:0.026152, accuracy:0.9844
epoch:5, validation:3264/5000, loss:0.042623, accuracy:0.9844
epoch:5, training:13312/19906, average_loss:0.004755, accuracy:0.9961
epoch:5, validation:3328/5000, loss:0.000383, accuracy:1.0000
epoch:5, training:13568/19906, average_loss:0.024716, accuracy:0.9922
epoch:5, validation:3392/5000, loss:0.001107, accuracy:1.0000
epoch:5, training:13824/19906, average_loss:0.005943, accuracy:0.9961
epoch:5, validation:3456/5000, loss:0.000887, accuracy:1.0000
epoch:5, training:14080/19906, average_loss:0.020014, accuracy:0.9961
epoch:5, validation:3520/5000, loss:0.000091, accuracy:1.0000
epoch:5, training:14336/19906, average_loss:0.018327, accuracy:0.9922
epoch:5, validation:3584/5000, loss:0.000018, accuracy:1.0000
epoch:5, training:14592/19906, average_loss:0.024668, accuracy:0.9961
epoch:5, validation:3648/5000, loss:0.092957, accuracy:0.9688
epoch:5, training:14848/19906, average_loss:0.004384, accuracy:1.0000
epoch:5, validation:3712/5000, loss:0.002224, accuracy:1.0000
epoch:5, training:15104/19906, average_loss:0.017429, accuracy:0.9883
epoch:5, validation:3776/5000, loss:0.026108, accuracy:0.9844
epoch:5, training:15360/19906, average_loss:0.020746, accuracy:0.9922
epoch:5, validation:3840/5000, loss:0.011061, accuracy:0.9844
epoch:5, training:15616/19906, average_loss:0.017468, accuracy:0.9922
epoch:5, validation:3904/5000, loss:0.044149, accuracy:0.9844
epoch:5, training:15872/19906, average_loss:0.022455, accuracy:0.9922
epoch:5, validation:3968/5000, loss:0.001940, accuracy:1.0000
epoch:5, training:16128/19906, average_loss:0.004524, accuracy:1.0000
epoch:5, validation:4032/5000, loss:0.049525, accuracy:0.9688
epoch:5, training:16384/19906, average_loss:0.016323, accuracy:0.9961
epoch:5, validation:4096/5000, loss:0.000095, accuracy:1.0000
epoch:5, training:16640/19906, average_loss:0.009873, accuracy:0.9961
epoch:5, validation:4160/5000, loss:0.000402, accuracy:1.0000
epoch:5, training:16896/19906, average_loss:0.008547, accuracy:0.9961
epoch:5, validation:4224/5000, loss:0.093978, accuracy:0.9688
epoch:5, training:17152/19906, average_loss:0.037947, accuracy:0.9922
epoch:5, validation:4288/5000, loss:0.002495, accuracy:1.0000
epoch:5, training:17408/19906, average_loss:0.017979, accuracy:0.9961
epoch:5, validation:4352/5000, loss:0.021485, accuracy:0.9844
epoch:5, training:17664/19906, average_loss:0.009288, accuracy:1.0000
epoch:5, validation:4416/5000, loss:0.003662, accuracy:1.0000
epoch:5, training:17920/19906, average_loss:0.014969, accuracy:0.9961
epoch:5, validation:4480/5000, loss:0.015339, accuracy:0.9844
epoch:5, training:18176/19906, average_loss:0.001343, accuracy:1.0000
epoch:5, validation:4544/5000, loss:0.023412, accuracy:0.9844
epoch:5, training:18432/19906, average_loss:0.003789, accuracy:1.0000
epoch:5, validation:4608/5000, loss:0.047362, accuracy:0.9844
epoch:5, training:18688/19906, average_loss:0.011439, accuracy:1.0000
epoch:5, validation:4672/5000, loss:0.160983, accuracy:0.9844
epoch:5, training:18944/19906, average_loss:0.021411, accuracy:0.9883
epoch:5, validation:4736/5000, loss:0.004237, accuracy:1.0000
epoch:5, training:19200/19906, average_loss:0.003174, accuracy:1.0000
epoch:5, validation:4800/5000, loss:0.000156, accuracy:1.0000
epoch:5, training:19456/19906, average_loss:0.031213, accuracy:0.9844
epoch:5, validation:4864/5000, loss:0.001125, accuracy:1.0000
epoch:5, training:19712/19906, average_loss:0.009150, accuracy:0.9922
epoch:5, validation:4928/5000, loss:0.000328, accuracy:1.0000
epoch:5, training:19904/19906, loss:0.001341, accuracy:1.0000
epoch 5, average training loss:0.012790 ; training accuracy:0.9951

epoch 5, average validation loss:0.019015 ; validation accuracy:0.9937
epoch:6, training:256/19906, average_loss:0.012095, accuracy:0.9922
epoch:6, validation:64/5000, loss:0.002997, accuracy:1.0000
epoch:6, training:512/19906, average_loss:0.024501, accuracy:0.9922
epoch:6, validation:128/5000, loss:0.006796, accuracy:1.0000
epoch:6, training:768/19906, average_loss:0.006513, accuracy:1.0000
epoch:6, validation:192/5000, loss:0.000199, accuracy:1.0000
epoch:6, training:1024/19906, average_loss:0.012493, accuracy:0.9961
epoch:6, validation:256/5000, loss:0.084177, accuracy:0.9844
epoch:6, training:1280/19906, average_loss:0.015733, accuracy:0.9961
epoch:6, validation:320/5000, loss:0.001942, accuracy:1.0000
epoch:6, training:1536/19906, average_loss:0.009158, accuracy:0.9961
epoch:6, validation:384/5000, loss:0.020903, accuracy:0.9844
epoch:6, training:1792/19906, average_loss:0.006809, accuracy:0.9961
epoch:6, validation:448/5000, loss:0.001132, accuracy:1.0000
epoch:6, training:2048/19906, average_loss:0.002315, accuracy:1.0000
epoch:6, validation:512/5000, loss:0.000050, accuracy:1.0000
epoch:6, training:2304/19906, average_loss:0.002262, accuracy:1.0000
epoch:6, validation:576/5000, loss:0.000379, accuracy:1.0000
epoch:6, training:2560/19906, average_loss:0.014566, accuracy:0.9922
epoch:6, validation:640/5000, loss:0.028177, accuracy:0.9844
epoch:6, training:2816/19906, average_loss:0.003266, accuracy:1.0000
epoch:6, validation:704/5000, loss:0.002318, accuracy:1.0000
epoch:6, training:3072/19906, average_loss:0.010359, accuracy:0.9922
epoch:6, validation:768/5000, loss:0.040359, accuracy:0.9844
epoch:6, training:3328/19906, average_loss:0.004332, accuracy:1.0000
epoch:6, validation:832/5000, loss:0.094202, accuracy:0.9688
epoch:6, training:3584/19906, average_loss:0.073426, accuracy:0.9805
epoch:6, validation:896/5000, loss:0.000981, accuracy:1.0000
epoch:6, training:3840/19906, average_loss:0.016283, accuracy:0.9922
epoch:6, validation:960/5000, loss:0.012021, accuracy:0.9844
epoch:6, training:4096/19906, average_loss:0.012484, accuracy:0.9961
epoch:6, validation:1024/5000, loss:0.033611, accuracy:0.9844
epoch:6, training:4352/19906, average_loss:0.001788, accuracy:1.0000
epoch:6, validation:1088/5000, loss:0.000335, accuracy:1.0000
epoch:6, training:4608/19906, average_loss:0.005084, accuracy:0.9961
epoch:6, validation:1152/5000, loss:0.003737, accuracy:1.0000
epoch:6, training:4864/19906, average_loss:0.019476, accuracy:0.9922
epoch:6, validation:1216/5000, loss:0.033785, accuracy:0.9844
epoch:6, training:5120/19906, average_loss:0.035782, accuracy:0.9922
epoch:6, validation:1280/5000, loss:0.000101, accuracy:1.0000
epoch:6, training:5376/19906, average_loss:0.008315, accuracy:0.9961
epoch:6, validation:1344/5000, loss:0.000428, accuracy:1.0000
epoch:6, training:5632/19906, average_loss:0.010817, accuracy:0.9961
epoch:6, validation:1408/5000, loss:0.000653, accuracy:1.0000
epoch:6, training:5888/19906, average_loss:0.010407, accuracy:0.9961
epoch:6, validation:1472/5000, loss:0.026272, accuracy:0.9844
epoch:6, training:6144/19906, average_loss:0.004534, accuracy:1.0000
epoch:6, validation:1536/5000, loss:0.001261, accuracy:1.0000
epoch:6, training:6400/19906, average_loss:0.003377, accuracy:1.0000
epoch:6, validation:1600/5000, loss:0.002767, accuracy:1.0000
epoch:6, training:6656/19906, average_loss:0.015233, accuracy:0.9922
epoch:6, validation:1664/5000, loss:0.000240, accuracy:1.0000
epoch:6, training:6912/19906, average_loss:0.011345, accuracy:1.0000
epoch:6, validation:1728/5000, loss:0.000431, accuracy:1.0000
epoch:6, training:7168/19906, average_loss:0.005121, accuracy:1.0000
epoch:6, validation:1792/5000, loss:0.000842, accuracy:1.0000
epoch:6, training:7424/19906, average_loss:0.002670, accuracy:1.0000
epoch:6, validation:1856/5000, loss:0.004989, accuracy:1.0000
epoch:6, training:7680/19906, average_loss:0.015482, accuracy:0.9961
epoch:6, validation:1920/5000, loss:0.061673, accuracy:0.9688
epoch:6, training:7936/19906, average_loss:0.009012, accuracy:0.9961
epoch:6, validation:1984/5000, loss:0.000281, accuracy:1.0000
epoch:6, training:8192/19906, average_loss:0.015582, accuracy:0.9922
epoch:6, validation:2048/5000, loss:0.000033, accuracy:1.0000
epoch:6, training:8448/19906, average_loss:0.004588, accuracy:1.0000
epoch:6, validation:2112/5000, loss:0.000189, accuracy:1.0000
epoch:6, training:8704/19906, average_loss:0.005276, accuracy:1.0000
epoch:6, validation:2176/5000, loss:0.026912, accuracy:0.9844
epoch:6, training:8960/19906, average_loss:0.006218, accuracy:1.0000
epoch:6, validation:2240/5000, loss:0.018921, accuracy:0.9844
epoch:6, training:9216/19906, average_loss:0.009436, accuracy:0.9922
epoch:6, validation:2304/5000, loss:0.020253, accuracy:0.9844
epoch:6, training:9472/19906, average_loss:0.034824, accuracy:0.9922
epoch:6, validation:2368/5000, loss:0.123537, accuracy:0.9531
epoch:6, training:9728/19906, average_loss:0.004766, accuracy:1.0000
epoch:6, validation:2432/5000, loss:0.000572, accuracy:1.0000
epoch:6, training:9984/19906, average_loss:0.001715, accuracy:1.0000
epoch:6, validation:2496/5000, loss:0.069034, accuracy:0.9844
epoch:6, training:10240/19906, average_loss:0.030500, accuracy:0.9961
epoch:6, validation:2560/5000, loss:0.054224, accuracy:0.9844
epoch:6, training:10496/19906, average_loss:0.002273, accuracy:1.0000
epoch:6, validation:2624/5000, loss:0.000411, accuracy:1.0000
epoch:6, training:10752/19906, average_loss:0.010656, accuracy:0.9961
epoch:6, validation:2688/5000, loss:0.000180, accuracy:1.0000
epoch:6, training:11008/19906, average_loss:0.004432, accuracy:1.0000
epoch:6, validation:2752/5000, loss:0.000803, accuracy:1.0000
epoch:6, training:11264/19906, average_loss:0.004031, accuracy:1.0000
epoch:6, validation:2816/5000, loss:0.007463, accuracy:1.0000
epoch:6, training:11520/19906, average_loss:0.001167, accuracy:1.0000
epoch:6, validation:2880/5000, loss:0.000387, accuracy:1.0000
epoch:6, training:11776/19906, average_loss:0.018467, accuracy:0.9961
epoch:6, validation:2944/5000, loss:0.018205, accuracy:0.9844
epoch:6, training:12032/19906, average_loss:0.020441, accuracy:0.9922
epoch:6, validation:3008/5000, loss:0.000304, accuracy:1.0000
epoch:6, training:12288/19906, average_loss:0.013665, accuracy:0.9922
epoch:6, validation:3072/5000, loss:0.000919, accuracy:1.0000
epoch:6, training:12544/19906, average_loss:0.001804, accuracy:1.0000
epoch:6, validation:3136/5000, loss:0.009698, accuracy:1.0000
epoch:6, training:12800/19906, average_loss:0.015939, accuracy:0.9961
epoch:6, validation:3200/5000, loss:0.000663, accuracy:1.0000
epoch:6, training:13056/19906, average_loss:0.005226, accuracy:0.9961
epoch:6, validation:3264/5000, loss:0.000141, accuracy:1.0000
epoch:6, training:13312/19906, average_loss:0.020035, accuracy:0.9961
epoch:6, validation:3328/5000, loss:0.000123, accuracy:1.0000
epoch:6, training:13568/19906, average_loss:0.017230, accuracy:0.9922
epoch:6, validation:3392/5000, loss:0.002730, accuracy:1.0000
epoch:6, training:13824/19906, average_loss:0.004287, accuracy:1.0000
epoch:6, validation:3456/5000, loss:0.116833, accuracy:0.9688
epoch:6, training:14080/19906, average_loss:0.022377, accuracy:0.9883
epoch:6, validation:3520/5000, loss:0.010491, accuracy:1.0000
epoch:6, training:14336/19906, average_loss:0.002219, accuracy:1.0000
epoch:6, validation:3584/5000, loss:0.000234, accuracy:1.0000
epoch:6, training:14592/19906, average_loss:0.006724, accuracy:0.9961
epoch:6, validation:3648/5000, loss:0.000314, accuracy:1.0000
epoch:6, training:14848/19906, average_loss:0.012967, accuracy:0.9961
epoch:6, validation:3712/5000, loss:0.000285, accuracy:1.0000
epoch:6, training:15104/19906, average_loss:0.010284, accuracy:0.9961
epoch:6, validation:3776/5000, loss:0.000479, accuracy:1.0000
epoch:6, training:15360/19906, average_loss:0.017025, accuracy:0.9961
epoch:6, validation:3840/5000, loss:0.000085, accuracy:1.0000
epoch:6, training:15616/19906, average_loss:0.003612, accuracy:1.0000
epoch:6, validation:3904/5000, loss:0.024226, accuracy:0.9844
epoch:6, training:15872/19906, average_loss:0.008524, accuracy:0.9961
epoch:6, validation:3968/5000, loss:0.223894, accuracy:0.9688
epoch:6, training:16128/19906, average_loss:0.000854, accuracy:1.0000
epoch:6, validation:4032/5000, loss:0.000429, accuracy:1.0000
epoch:6, training:16384/19906, average_loss:0.002606, accuracy:1.0000
epoch:6, validation:4096/5000, loss:0.000238, accuracy:1.0000
epoch:6, training:16640/19906, average_loss:0.005464, accuracy:1.0000
epoch:6, validation:4160/5000, loss:0.197438, accuracy:0.9844
epoch:6, training:16896/19906, average_loss:0.016821, accuracy:0.9961
epoch:6, validation:4224/5000, loss:0.000276, accuracy:1.0000
epoch:6, training:17152/19906, average_loss:0.007208, accuracy:1.0000
epoch:6, validation:4288/5000, loss:0.000150, accuracy:1.0000
epoch:6, training:17408/19906, average_loss:0.005424, accuracy:1.0000
epoch:6, validation:4352/5000, loss:0.037912, accuracy:0.9844
epoch:6, training:17664/19906, average_loss:0.017889, accuracy:0.9961
epoch:6, validation:4416/5000, loss:0.006573, accuracy:1.0000
epoch:6, training:17920/19906, average_loss:0.015910, accuracy:0.9922
epoch:6, validation:4480/5000, loss:0.011235, accuracy:0.9844
epoch:6, training:18176/19906, average_loss:0.005653, accuracy:0.9961
epoch:6, validation:4544/5000, loss:0.000729, accuracy:1.0000
epoch:6, training:18432/19906, average_loss:0.005733, accuracy:0.9961
epoch:6, validation:4608/5000, loss:0.040836, accuracy:0.9688
epoch:6, training:18688/19906, average_loss:0.022424, accuracy:0.9961
epoch:6, validation:4672/5000, loss:0.000057, accuracy:1.0000
epoch:6, training:18944/19906, average_loss:0.047076, accuracy:0.9844
epoch:6, validation:4736/5000, loss:0.000080, accuracy:1.0000
epoch:6, training:19200/19906, average_loss:0.007976, accuracy:0.9961
epoch:6, validation:4800/5000, loss:0.000093, accuracy:1.0000
epoch:6, training:19456/19906, average_loss:0.004508, accuracy:1.0000
epoch:6, validation:4864/5000, loss:0.002106, accuracy:1.0000
epoch:6, training:19712/19906, average_loss:0.008853, accuracy:0.9961
epoch:6, validation:4928/5000, loss:0.005031, accuracy:1.0000
epoch:6, training:19904/19906, loss:0.009544, accuracy:1.0000
epoch 6, average training loss:0.011633 ; training accuracy:0.9964

epoch 6, average validation loss:0.019529 ; validation accuracy:0.9937
epoch:7, training:256/19906, average_loss:0.018405, accuracy:0.9961
epoch:7, validation:64/5000, loss:0.007986, accuracy:1.0000
epoch:7, training:512/19906, average_loss:0.001225, accuracy:1.0000
epoch:7, validation:128/5000, loss:0.001130, accuracy:1.0000
epoch:7, training:768/19906, average_loss:0.009998, accuracy:0.9961
epoch:7, validation:192/5000, loss:0.002072, accuracy:1.0000
epoch:7, training:1024/19906, average_loss:0.012585, accuracy:0.9961
epoch:7, validation:256/5000, loss:0.186589, accuracy:0.9844
epoch:7, training:1280/19906, average_loss:0.010538, accuracy:0.9922
epoch:7, validation:320/5000, loss:0.001285, accuracy:1.0000
epoch:7, training:1536/19906, average_loss:0.004848, accuracy:1.0000
epoch:7, validation:384/5000, loss:0.003840, accuracy:1.0000
epoch:7, training:1792/19906, average_loss:0.006752, accuracy:0.9961
epoch:7, validation:448/5000, loss:0.002779, accuracy:1.0000
epoch:7, training:2048/19906, average_loss:0.010059, accuracy:0.9961
epoch:7, validation:512/5000, loss:0.022933, accuracy:0.9844
epoch:7, training:2304/19906, average_loss:0.018303, accuracy:0.9922
epoch:7, validation:576/5000, loss:0.002792, accuracy:1.0000
epoch:7, training:2560/19906, average_loss:0.003417, accuracy:1.0000
epoch:7, validation:640/5000, loss:0.000038, accuracy:1.0000
epoch:7, training:2816/19906, average_loss:0.012910, accuracy:0.9961
epoch:7, validation:704/5000, loss:0.000046, accuracy:1.0000
epoch:7, training:3072/19906, average_loss:0.017252, accuracy:0.9961
epoch:7, validation:768/5000, loss:0.008920, accuracy:1.0000
epoch:7, training:3328/19906, average_loss:0.016819, accuracy:0.9883
epoch:7, validation:832/5000, loss:0.001548, accuracy:1.0000
epoch:7, training:3584/19906, average_loss:0.006525, accuracy:0.9961
epoch:7, validation:896/5000, loss:0.000078, accuracy:1.0000
epoch:7, training:3840/19906, average_loss:0.002238, accuracy:1.0000
epoch:7, validation:960/5000, loss:0.007130, accuracy:1.0000
epoch:7, training:4096/19906, average_loss:0.008427, accuracy:0.9961
epoch:7, validation:1024/5000, loss:0.174150, accuracy:0.9531
epoch:7, training:4352/19906, average_loss:0.009656, accuracy:0.9961
epoch:7, validation:1088/5000, loss:0.000044, accuracy:1.0000
epoch:7, training:4608/19906, average_loss:0.003748, accuracy:1.0000
epoch:7, validation:1152/5000, loss:0.000007, accuracy:1.0000
epoch:7, training:4864/19906, average_loss:0.003443, accuracy:1.0000
epoch:7, validation:1216/5000, loss:0.000360, accuracy:1.0000
epoch:7, training:5120/19906, average_loss:0.008104, accuracy:0.9961
epoch:7, validation:1280/5000, loss:0.052332, accuracy:0.9844
epoch:7, training:5376/19906, average_loss:0.001005, accuracy:1.0000
epoch:7, validation:1344/5000, loss:0.000518, accuracy:1.0000
epoch:7, training:5632/19906, average_loss:0.000960, accuracy:1.0000
epoch:7, validation:1408/5000, loss:0.000060, accuracy:1.0000
epoch:7, training:5888/19906, average_loss:0.013268, accuracy:0.9961
epoch:7, validation:1472/5000, loss:0.000081, accuracy:1.0000
epoch:7, training:6144/19906, average_loss:0.005086, accuracy:1.0000
epoch:7, validation:1536/5000, loss:0.000098, accuracy:1.0000
epoch:7, training:6400/19906, average_loss:0.008827, accuracy:0.9961
epoch:7, validation:1600/5000, loss:0.002875, accuracy:1.0000
epoch:7, training:6656/19906, average_loss:0.000848, accuracy:1.0000
epoch:7, validation:1664/5000, loss:0.003265, accuracy:1.0000
epoch:7, training:6912/19906, average_loss:0.001785, accuracy:1.0000
epoch:7, validation:1728/5000, loss:0.000320, accuracy:1.0000
epoch:7, training:7168/19906, average_loss:0.009732, accuracy:0.9961
epoch:7, validation:1792/5000, loss:0.021868, accuracy:0.9844
epoch:7, training:7424/19906, average_loss:0.004482, accuracy:1.0000
epoch:7, validation:1856/5000, loss:0.000735, accuracy:1.0000
epoch:7, training:7680/19906, average_loss:0.028985, accuracy:0.9922
epoch:7, validation:1920/5000, loss:0.000275, accuracy:1.0000
epoch:7, training:7936/19906, average_loss:0.018211, accuracy:0.9922
epoch:7, validation:1984/5000, loss:0.090035, accuracy:0.9844
epoch:7, training:8192/19906, average_loss:0.017973, accuracy:0.9883
epoch:7, validation:2048/5000, loss:0.041030, accuracy:0.9844
epoch:7, training:8448/19906, average_loss:0.015277, accuracy:0.9922
epoch:7, validation:2112/5000, loss:0.000674, accuracy:1.0000
epoch:7, training:8704/19906, average_loss:0.018204, accuracy:0.9922
epoch:7, validation:2176/5000, loss:0.000301, accuracy:1.0000
epoch:7, training:8960/19906, average_loss:0.003010, accuracy:1.0000
epoch:7, validation:2240/5000, loss:0.000436, accuracy:1.0000
epoch:7, training:9216/19906, average_loss:0.001108, accuracy:1.0000
epoch:7, validation:2304/5000, loss:0.000063, accuracy:1.0000
epoch:7, training:9472/19906, average_loss:0.030875, accuracy:0.9883
epoch:7, validation:2368/5000, loss:0.041109, accuracy:0.9844
epoch:7, training:9728/19906, average_loss:0.018706, accuracy:0.9922
epoch:7, validation:2432/5000, loss:0.000637, accuracy:1.0000
epoch:7, training:9984/19906, average_loss:0.005740, accuracy:0.9961
epoch:7, validation:2496/5000, loss:0.061787, accuracy:0.9688
epoch:7, training:10240/19906, average_loss:0.033642, accuracy:0.9883
epoch:7, validation:2560/5000, loss:0.053303, accuracy:0.9688
epoch:7, training:10496/19906, average_loss:0.003316, accuracy:1.0000
epoch:7, validation:2624/5000, loss:0.054371, accuracy:0.9688
epoch:7, training:10752/19906, average_loss:0.001594, accuracy:1.0000
epoch:7, validation:2688/5000, loss:0.093382, accuracy:0.9844
epoch:7, training:11008/19906, average_loss:0.004500, accuracy:1.0000
epoch:7, validation:2752/5000, loss:0.001360, accuracy:1.0000
epoch:7, training:11264/19906, average_loss:0.002745, accuracy:1.0000
epoch:7, validation:2816/5000, loss:0.094213, accuracy:0.9844
epoch:7, training:11520/19906, average_loss:0.000416, accuracy:1.0000
epoch:7, validation:2880/5000, loss:0.000431, accuracy:1.0000
epoch:7, training:11776/19906, average_loss:0.007176, accuracy:0.9961
epoch:7, validation:2944/5000, loss:0.070693, accuracy:0.9688
epoch:7, training:12032/19906, average_loss:0.017507, accuracy:0.9922
epoch:7, validation:3008/5000, loss:0.028983, accuracy:0.9844
epoch:7, training:12288/19906, average_loss:0.002459, accuracy:1.0000
epoch:7, validation:3072/5000, loss:0.059220, accuracy:0.9844
epoch:7, training:12544/19906, average_loss:0.010453, accuracy:0.9922
epoch:7, validation:3136/5000, loss:0.026914, accuracy:0.9844
epoch:7, training:12800/19906, average_loss:0.005291, accuracy:1.0000
epoch:7, validation:3200/5000, loss:0.000117, accuracy:1.0000
epoch:7, training:13056/19906, average_loss:0.000514, accuracy:1.0000
epoch:7, validation:3264/5000, loss:0.000394, accuracy:1.0000
epoch:7, training:13312/19906, average_loss:0.018476, accuracy:0.9961
epoch:7, validation:3328/5000, loss:0.022228, accuracy:0.9844
epoch:7, training:13568/19906, average_loss:0.029792, accuracy:0.9883
epoch:7, validation:3392/5000, loss:0.000382, accuracy:1.0000
epoch:7, training:13824/19906, average_loss:0.002315, accuracy:1.0000
epoch:7, validation:3456/5000, loss:0.056141, accuracy:0.9844
epoch:7, training:14080/19906, average_loss:0.009290, accuracy:0.9922
epoch:7, validation:3520/5000, loss:0.044642, accuracy:0.9844
epoch:7, training:14336/19906, average_loss:0.045183, accuracy:0.9805
epoch:7, validation:3584/5000, loss:0.000077, accuracy:1.0000
epoch:7, training:14592/19906, average_loss:0.007098, accuracy:0.9961
epoch:7, validation:3648/5000, loss:0.001584, accuracy:1.0000
epoch:7, training:14848/19906, average_loss:0.009654, accuracy:0.9922
epoch:7, validation:3712/5000, loss:0.000303, accuracy:1.0000
epoch:7, training:15104/19906, average_loss:0.033735, accuracy:0.9844
epoch:7, validation:3776/5000, loss:0.002072, accuracy:1.0000
epoch:7, training:15360/19906, average_loss:0.003471, accuracy:1.0000
epoch:7, validation:3840/5000, loss:0.000157, accuracy:1.0000
epoch:7, training:15616/19906, average_loss:0.016320, accuracy:0.9922
epoch:7, validation:3904/5000, loss:0.001363, accuracy:1.0000
epoch:7, training:15872/19906, average_loss:0.005046, accuracy:1.0000
epoch:7, validation:3968/5000, loss:0.000937, accuracy:1.0000
epoch:7, training:16128/19906, average_loss:0.003657, accuracy:1.0000
epoch:7, validation:4032/5000, loss:0.000084, accuracy:1.0000
epoch:7, training:16384/19906, average_loss:0.006245, accuracy:1.0000
epoch:7, validation:4096/5000, loss:0.004310, accuracy:1.0000
epoch:7, training:16640/19906, average_loss:0.017087, accuracy:0.9922
epoch:7, validation:4160/5000, loss:0.098500, accuracy:0.9688
epoch:7, training:16896/19906, average_loss:0.010507, accuracy:0.9961
epoch:7, validation:4224/5000, loss:0.000375, accuracy:1.0000
epoch:7, training:17152/19906, average_loss:0.007691, accuracy:0.9961
epoch:7, validation:4288/5000, loss:0.010573, accuracy:1.0000
epoch:7, training:17408/19906, average_loss:0.007313, accuracy:0.9961
epoch:7, validation:4352/5000, loss:0.000052, accuracy:1.0000
epoch:7, training:17664/19906, average_loss:0.005641, accuracy:0.9961
epoch:7, validation:4416/5000, loss:0.000153, accuracy:1.0000
epoch:7, training:17920/19906, average_loss:0.003636, accuracy:1.0000
epoch:7, validation:4480/5000, loss:0.001288, accuracy:1.0000
epoch:7, training:18176/19906, average_loss:0.009780, accuracy:0.9961
epoch:7, validation:4544/5000, loss:0.005432, accuracy:1.0000
epoch:7, training:18432/19906, average_loss:0.015261, accuracy:0.9961
epoch:7, validation:4608/5000, loss:0.000875, accuracy:1.0000
epoch:7, training:18688/19906, average_loss:0.014965, accuracy:0.9961
epoch:7, validation:4672/5000, loss:0.174631, accuracy:0.9844
epoch:7, training:18944/19906, average_loss:0.011977, accuracy:0.9961
epoch:7, validation:4736/5000, loss:0.000080, accuracy:1.0000
epoch:7, training:19200/19906, average_loss:0.013088, accuracy:0.9922
epoch:7, validation:4800/5000, loss:0.004907, accuracy:1.0000
epoch:7, training:19456/19906, average_loss:0.001190, accuracy:1.0000
epoch:7, validation:4864/5000, loss:0.000045, accuracy:1.0000
epoch:7, training:19712/19906, average_loss:0.007530, accuracy:0.9961
epoch:7, validation:4928/5000, loss:0.003779, accuracy:1.0000
epoch:7, training:19904/19906, loss:0.018912, accuracy:0.9844
epoch 7, average training loss:0.010323 ; training accuracy:0.9960

epoch 7, average validation loss:0.021566 ; validation accuracy:0.9941
epoch:8, training:256/19906, average_loss:0.005173, accuracy:0.9961
epoch:8, validation:64/5000, loss:0.031926, accuracy:0.9844
epoch:8, training:512/19906, average_loss:0.002880, accuracy:1.0000
epoch:8, validation:128/5000, loss:0.001631, accuracy:1.0000
epoch:8, training:768/19906, average_loss:0.001898, accuracy:1.0000
epoch:8, validation:192/5000, loss:0.000080, accuracy:1.0000
epoch:8, training:1024/19906, average_loss:0.001665, accuracy:1.0000
epoch:8, validation:256/5000, loss:0.000206, accuracy:1.0000
epoch:8, training:1280/19906, average_loss:0.017936, accuracy:0.9922
epoch:8, validation:320/5000, loss:0.000380, accuracy:1.0000
epoch:8, training:1536/19906, average_loss:0.020622, accuracy:0.9961
epoch:8, validation:384/5000, loss:0.000435, accuracy:1.0000
epoch:8, training:1792/19906, average_loss:0.003189, accuracy:1.0000
epoch:8, validation:448/5000, loss:0.000269, accuracy:1.0000
epoch:8, training:2048/19906, average_loss:0.014955, accuracy:0.9922
epoch:8, validation:512/5000, loss:0.000177, accuracy:1.0000
epoch:8, training:2304/19906, average_loss:0.004604, accuracy:0.9961
epoch:8, validation:576/5000, loss:0.023933, accuracy:0.9844
epoch:8, training:2560/19906, average_loss:0.003475, accuracy:1.0000
epoch:8, validation:640/5000, loss:0.000534, accuracy:1.0000
epoch:8, training:2816/19906, average_loss:0.016484, accuracy:0.9922
epoch:8, validation:704/5000, loss:0.037754, accuracy:0.9844
epoch:8, training:3072/19906, average_loss:0.002726, accuracy:1.0000
epoch:8, validation:768/5000, loss:0.002208, accuracy:1.0000
epoch:8, training:3328/19906, average_loss:0.009810, accuracy:0.9961
epoch:8, validation:832/5000, loss:0.000165, accuracy:1.0000
epoch:8, training:3584/19906, average_loss:0.026675, accuracy:0.9844
epoch:8, validation:896/5000, loss:0.000165, accuracy:1.0000
epoch:8, training:3840/19906, average_loss:0.005544, accuracy:0.9961
epoch:8, validation:960/5000, loss:0.000676, accuracy:1.0000
epoch:8, training:4096/19906, average_loss:0.014160, accuracy:0.9961
epoch:8, validation:1024/5000, loss:0.037939, accuracy:0.9844
epoch:8, training:4352/19906, average_loss:0.020313, accuracy:0.9961
epoch:8, validation:1088/5000, loss:0.004617, accuracy:1.0000
epoch:8, training:4608/19906, average_loss:0.013314, accuracy:0.9922
epoch:8, validation:1152/5000, loss:0.001293, accuracy:1.0000
epoch:8, training:4864/19906, average_loss:0.012961, accuracy:0.9961
epoch:8, validation:1216/5000, loss:0.000103, accuracy:1.0000
epoch:8, training:5120/19906, average_loss:0.004817, accuracy:1.0000
epoch:8, validation:1280/5000, loss:0.006361, accuracy:1.0000
epoch:8, training:5376/19906, average_loss:0.004444, accuracy:1.0000
epoch:8, validation:1344/5000, loss:0.000692, accuracy:1.0000
epoch:8, training:5632/19906, average_loss:0.003558, accuracy:1.0000
epoch:8, validation:1408/5000, loss:0.000548, accuracy:1.0000
epoch:8, training:5888/19906, average_loss:0.007667, accuracy:0.9961
epoch:8, validation:1472/5000, loss:0.018705, accuracy:0.9844
epoch:8, training:6144/19906, average_loss:0.025178, accuracy:0.9883
epoch:8, validation:1536/5000, loss:0.013489, accuracy:0.9844
epoch:8, training:6400/19906, average_loss:0.001476, accuracy:1.0000
epoch:8, validation:1600/5000, loss:0.244480, accuracy:0.9688
epoch:8, training:6656/19906, average_loss:0.001827, accuracy:1.0000
epoch:8, validation:1664/5000, loss:0.044674, accuracy:0.9844
epoch:8, training:6912/19906, average_loss:0.019210, accuracy:0.9961
epoch:8, validation:1728/5000, loss:0.005767, accuracy:1.0000
epoch:8, training:7168/19906, average_loss:0.011426, accuracy:0.9961
epoch:8, validation:1792/5000, loss:0.092129, accuracy:0.9688
epoch:8, training:7424/19906, average_loss:0.007102, accuracy:0.9961
epoch:8, validation:1856/5000, loss:0.000415, accuracy:1.0000
epoch:8, training:7680/19906, average_loss:0.017747, accuracy:0.9961
epoch:8, validation:1920/5000, loss:0.001364, accuracy:1.0000
epoch:8, training:7936/19906, average_loss:0.031559, accuracy:0.9883
epoch:8, validation:1984/5000, loss:0.006018, accuracy:1.0000
epoch:8, training:8192/19906, average_loss:0.011616, accuracy:0.9922
epoch:8, validation:2048/5000, loss:0.028987, accuracy:0.9844
epoch:8, training:8448/19906, average_loss:0.019174, accuracy:0.9883
epoch:8, validation:2112/5000, loss:0.033099, accuracy:0.9844
epoch:8, training:8704/19906, average_loss:0.008710, accuracy:0.9961
epoch:8, validation:2176/5000, loss:0.001638, accuracy:1.0000
epoch:8, training:8960/19906, average_loss:0.005293, accuracy:1.0000
epoch:8, validation:2240/5000, loss:0.001999, accuracy:1.0000
epoch:8, training:9216/19906, average_loss:0.004903, accuracy:1.0000
epoch:8, validation:2304/5000, loss:0.001093, accuracy:1.0000
epoch:8, training:9472/19906, average_loss:0.008783, accuracy:0.9961
epoch:8, validation:2368/5000, loss:0.000082, accuracy:1.0000
epoch:8, training:9728/19906, average_loss:0.003654, accuracy:1.0000
epoch:8, validation:2432/5000, loss:0.000583, accuracy:1.0000
epoch:8, training:9984/19906, average_loss:0.022715, accuracy:0.9844
epoch:8, validation:2496/5000, loss:0.054912, accuracy:0.9844
epoch:8, training:10240/19906, average_loss:0.002124, accuracy:1.0000
epoch:8, validation:2560/5000, loss:0.004657, accuracy:1.0000
epoch:8, training:10496/19906, average_loss:0.007746, accuracy:0.9961
epoch:8, validation:2624/5000, loss:0.006223, accuracy:1.0000
epoch:8, training:10752/19906, average_loss:0.030860, accuracy:0.9883
epoch:8, validation:2688/5000, loss:0.086948, accuracy:0.9844
epoch:8, training:11008/19906, average_loss:0.007616, accuracy:0.9961
epoch:8, validation:2752/5000, loss:0.000320, accuracy:1.0000
epoch:8, training:11264/19906, average_loss:0.008948, accuracy:0.9922
epoch:8, validation:2816/5000, loss:0.176739, accuracy:0.9844
epoch:8, training:11520/19906, average_loss:0.024287, accuracy:0.9961
epoch:8, validation:2880/5000, loss:0.000276, accuracy:1.0000
epoch:8, training:11776/19906, average_loss:0.003230, accuracy:1.0000
epoch:8, validation:2944/5000, loss:0.040759, accuracy:0.9844
epoch:8, training:12032/19906, average_loss:0.010870, accuracy:0.9922
epoch:8, validation:3008/5000, loss:0.094087, accuracy:0.9844
epoch:8, training:12288/19906, average_loss:0.011439, accuracy:0.9961
epoch:8, validation:3072/5000, loss:0.002011, accuracy:1.0000
epoch:8, training:12544/19906, average_loss:0.005959, accuracy:1.0000
epoch:8, validation:3136/5000, loss:0.042535, accuracy:0.9844
epoch:8, training:12800/19906, average_loss:0.003613, accuracy:1.0000
epoch:8, validation:3200/5000, loss:0.023020, accuracy:0.9844
epoch:8, training:13056/19906, average_loss:0.007700, accuracy:0.9961
epoch:8, validation:3264/5000, loss:0.000161, accuracy:1.0000
epoch:8, training:13312/19906, average_loss:0.015458, accuracy:0.9961
epoch:8, validation:3328/5000, loss:0.000150, accuracy:1.0000
epoch:8, training:13568/19906, average_loss:0.000819, accuracy:1.0000
epoch:8, validation:3392/5000, loss:0.000518, accuracy:1.0000
epoch:8, training:13824/19906, average_loss:0.002446, accuracy:1.0000
epoch:8, validation:3456/5000, loss:0.000330, accuracy:1.0000
epoch:8, training:14080/19906, average_loss:0.027236, accuracy:0.9922
epoch:8, validation:3520/5000, loss:0.000765, accuracy:1.0000
epoch:8, training:14336/19906, average_loss:0.013946, accuracy:0.9961
epoch:8, validation:3584/5000, loss:0.002073, accuracy:1.0000
epoch:8, training:14592/19906, average_loss:0.003326, accuracy:1.0000
epoch:8, validation:3648/5000, loss:0.023279, accuracy:0.9844
epoch:8, training:14848/19906, average_loss:0.004795, accuracy:1.0000
epoch:8, validation:3712/5000, loss:0.040471, accuracy:0.9844
epoch:8, training:15104/19906, average_loss:0.004585, accuracy:1.0000
epoch:8, validation:3776/5000, loss:0.002928, accuracy:1.0000
epoch:8, training:15360/19906, average_loss:0.001443, accuracy:1.0000
epoch:8, validation:3840/5000, loss:0.021554, accuracy:0.9844
epoch:8, training:15616/19906, average_loss:0.017829, accuracy:0.9883
epoch:8, validation:3904/5000, loss:0.000048, accuracy:1.0000
epoch:8, training:15872/19906, average_loss:0.012366, accuracy:0.9922
epoch:8, validation:3968/5000, loss:0.003002, accuracy:1.0000
epoch:8, training:16128/19906, average_loss:0.010477, accuracy:0.9961
epoch:8, validation:4032/5000, loss:0.007529, accuracy:1.0000
epoch:8, training:16384/19906, average_loss:0.003410, accuracy:1.0000
epoch:8, validation:4096/5000, loss:0.000069, accuracy:1.0000
epoch:8, training:16640/19906, average_loss:0.006232, accuracy:0.9961
epoch:8, validation:4160/5000, loss:0.077663, accuracy:0.9844
epoch:8, training:16896/19906, average_loss:0.002608, accuracy:1.0000
epoch:8, validation:4224/5000, loss:0.000752, accuracy:1.0000
epoch:8, training:17152/19906, average_loss:0.004358, accuracy:1.0000
epoch:8, validation:4288/5000, loss:0.001415, accuracy:1.0000
epoch:8, training:17408/19906, average_loss:0.021093, accuracy:0.9883
epoch:8, validation:4352/5000, loss:0.032622, accuracy:0.9688
epoch:8, training:17664/19906, average_loss:0.002925, accuracy:1.0000
epoch:8, validation:4416/5000, loss:0.001313, accuracy:1.0000
epoch:8, training:17920/19906, average_loss:0.003364, accuracy:1.0000
epoch:8, validation:4480/5000, loss:0.025565, accuracy:0.9844
epoch:8, training:18176/19906, average_loss:0.001737, accuracy:1.0000
epoch:8, validation:4544/5000, loss:0.000205, accuracy:1.0000
epoch:8, training:18432/19906, average_loss:0.013189, accuracy:0.9922
epoch:8, validation:4608/5000, loss:0.014486, accuracy:0.9844
epoch:8, training:18688/19906, average_loss:0.001255, accuracy:1.0000
epoch:8, validation:4672/5000, loss:0.000209, accuracy:1.0000
epoch:8, training:18944/19906, average_loss:0.019499, accuracy:0.9961
epoch:8, validation:4736/5000, loss:0.072024, accuracy:0.9688
epoch:8, training:19200/19906, average_loss:0.008908, accuracy:0.9961
epoch:8, validation:4800/5000, loss:0.000157, accuracy:1.0000
epoch:8, training:19456/19906, average_loss:0.000628, accuracy:1.0000
epoch:8, validation:4864/5000, loss:0.000570, accuracy:1.0000
epoch:8, training:19712/19906, average_loss:0.000410, accuracy:1.0000
epoch:8, validation:4928/5000, loss:0.046395, accuracy:0.9844
epoch:8, training:19904/19906, loss:0.011745, accuracy:1.0000
epoch 8, average training loss:0.009714 ; training accuracy:0.9963

epoch 8, average validation loss:0.020199 ; validation accuracy:0.9937

13、可视化第二次训练过程的评价指标

In [75]:
fig,ax=plt.subplots(4,1,figsize=(15,18))

ax[0].plot(running['loss']['train'])
ax[0].plot(running['loss']['valid'])
ax[0].set_title('running loss')

ax[1].plot(running['acc']['train'])
ax[1].plot(running['acc']['valid'])
ax[1].set_title('running accuracy')

ax[2].plot(epoch_dict['loss']['train'])
ax[2].plot(epoch_dict['loss']['valid'])
ax[2].set_title('epoch loss')

ax[3].plot(epoch_dict['acc']['train'])
ax[3].plot(epoch_dict['acc']['valid'])
ax[3].set_title('epoch accuracy')
Out[75]:
Text(0.5,1,'epoch accuracy')
In [ ]:
# torch.save(model.state_dict(),save_model)
In [39]:
# model.load_state_dict(torch.load('Net-5.pkl'))

三、预测测试集

1、准备测试数据

In [40]:
test_dir=os.path.join(data_dir,'test')
test_images=os.listdir(test_dir)
test_sets=[(os.path.join(test_dir,fn),int(fn[:-4])) for fn in test_images] #test_sets数据类型为(image_path,ID)
test_size=len(test_sets)
print('test_sets: %d'%(test_size))
test_sets: 12500

2、预测图片是狗的概率

In [41]:
#创建一个空的带header的DataFrame
df=pd.DataFrame(columns=['id','label'])

#test
count=0
model.eval()
test_loader=torch.utils.data.DataLoader(test_sets,batch_size=100,num_workers=4)
for paths,ID in test_loader:
    inputs=batch_transform(paths,transform['test'])
    inputs=inputs.to(device)
    outputs=model(inputs)
    dog_probs=torch.nn.functional.softmax(outputs,dim=1).data[:,1] #图片是狗的概率
    df=df.append(pd.DataFrame({'id':ID,'label':dog_probs}),ignore_index=True)
    count+=1
    print('processing: %d/%d\r'%(count*100,test_size),end='')
processing: 12500/12500

3、预测结果可视化

In [70]:
#抽样可视化预测结果。
from random import sample
samples=sample(range(test_size),20)
fig,axes=plt.subplots(4,5,figsize=(20,20))
for i in range(20):
    ax=axes[i//5,i%5]
    sampl=samples[i]
    dog_prob=df.loc[df.id==test_sets[sampl][1],'label'].item()
    if dog_prob<0.5:
        label='Cat'
        prob=1-dog_prob
    else:
        label='Dog'
        prob=dog_prob
    ax.imshow(Image.open(test_sets[sampl][0]))
    ax.set_xlabel(test_images[sampl])
    ax.set_title('%.2f%% is %s'%(prob*100,label))

4、依id排序,将预测概率df.label clip到[0.005,0.995],将DataFrame写入csv文件。

In [42]:
csv_file='submission.csv'
df.sort_values(by='id',inplace=True)
df.label.clip(0.005,0.995,inplace=True)
df.to_csv(csv_file,index=False)
print(df)
          id     label
8485       1  0.995000
8403       2  0.995000
8316       3  0.995000
10466      4  0.995000
1464       5  0.005000
7874       6  0.005000
11042      7  0.005000
3874       8  0.005000
8647       9  0.005000
6454      10  0.005000
1070      11  0.005000
906       12  0.995000
11819     13  0.005000
10514     14  0.005000
9988      15  0.005000
1546      16  0.005000
2307      17  0.995000
11742     18  0.995000
12051     19  0.005000
3798      20  0.005000
10554     21  0.995000
5293      22  0.005000
8056      23  0.995000
9138      24  0.995000
11469     25  0.005000
8466      26  0.995000
4351      27  0.995000
4670      28  0.005000
10061     29  0.082660
3125      30  0.995000
...      ...       ...
9374   12471  0.995000
4655   12472  0.995000
10549  12473  0.005000
7234   12474  0.005000
607    12475  0.005000
1892   12476  0.995000
1311   12477  0.995000
2322   12478  0.995000
10705  12479  0.005000
3020   12480  0.005000
10582  12481  0.023944
6289   12482  0.005000
2515   12483  0.005000
2567   12484  0.995000
9607   12485  0.005000
6762   12486  0.995000
5051   12487  0.995000
2684   12488  0.995000
8318   12489  0.995000
6957   12490  0.995000
1595   12491  0.995000
1273   12492  0.995000
6491   12493  0.995000
10754  12494  0.995000
10260  12495  0.005000
7548   12496  0.005000
1163   12497  0.005000
12463  12498  0.995000
4114   12499  0.995000
1184   12500  0.005000

[12500 rows x 2 columns]

5、提交 submission.csv 至 https://www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition/submit 获取评分结果